{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "560b8bcf",
   "metadata": {},
   "source": [
    "# 1 特征加工\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "f6a80d58",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-12-11T02:59:44.427486Z",
     "iopub.status.busy": "2024-12-11T02:59:44.427063Z",
     "iopub.status.idle": "2024-12-11T02:59:44.922099Z",
     "msg_id": "c6249dd5-fa4c-48d9-9768-1596bc3f703f",
     "shell.execute_reply": "2024-12-11T02:59:44.921308Z",
     "shell.execute_reply.started": "2024-12-11T02:59:44.427456Z"
    }
   },
   "outputs": [],
   "source": [
    "import gc\n",
    "import os\n",
    "import pickle\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "from tqdm import tqdm"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "d3eebf5e",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-12-11T02:59:44.924108Z",
     "iopub.status.busy": "2024-12-11T02:59:44.923644Z",
     "iopub.status.idle": "2024-12-11T03:00:49.351778Z",
     "msg_id": "5e5e3b65-f9c4-4289-beaf-0d21f8c505b7",
     "shell.execute_reply": "2024-12-11T03:00:49.350930Z",
     "shell.execute_reply.started": "2024-12-11T02:59:44.924080Z"
    }
   },
   "outputs": [],
   "source": [
    "# 1 读取数据集\n",
    "# 1.1 训练集\n",
    "nature_train             = pd.read_csv('../contest/train/GTGSH_NATURE_TRAIN.csv')\n",
    "asset_train              = pd.read_csv('../contest/train/GTGSH_ASSET_TRAIN.csv')\n",
    "prod_hold_train          = pd.read_csv('../contest/train/GTGSH_PROD_HOLD_TRAIN.csv')\n",
    "tr_ibtf_train            = pd.read_csv('../contest/train/GTGSH_TR_IBTF_TRAIN.csv')\n",
    "tr_tpay_train            = pd.read_csv('../contest/train/GTGSH_TR_TPAY_TRAIN.csv')\n",
    "mb_pageview_dtl_train    = pd.read_csv('../contest/train/GTGSH_MB_PAGEVIEW_DTL_TRAIN.csv')\n",
    "tr_aps_dtl_train         = pd.read_csv('../contest/train/GTGSH_TR_APS_DTL_TRAIN.csv')\n",
    "merch_tr_dtl_train       = pd.read_csv('../contest/train/GTGSH_MERCH_TR_DTL_TRAIN.csv')\n",
    "entinfo_basic_info_train = pd.read_csv('../contest/train/GTGSH_ENTINFO_BASIC_INFO_TRAIN.csv')\n",
    "target_train             = pd.read_csv('../contest/train/GTGSH_TARGET_TRAIN.csv')\n",
    "\n",
    "# 1.1.1 重命名（aps,ibtf无需重命名）\n",
    "nature_train.columns = [('_').join(['nature', col]) if col not in ['CUST_NO', 'FLAG'] else col for col in nature_train.columns]\n",
    "asset_train.columns = [('_').join(['asset', col]) if col not in ['CUST_NO', 'FLAG'] else col for col in asset_train.columns]\n",
    "prod_hold_train.columns = [('_').join(['prod_hold', col]) if col not in ['CUST_NO', 'FLAG'] else col for col in prod_hold_train.columns]\n",
    "mb_pageview_dtl_train.columns = [('_').join(['mb_pageview_dtl', col]) if col not in ['CUST_NO', 'FLAG'] else col for col in mb_pageview_dtl_train.columns]\n",
    "merch_tr_dtl_train.columns = [('_').join(['merch_tr_dtl', col]) if col not in ['CUST_NO', 'FLAG'] else col for col in merch_tr_dtl_train.columns]\n",
    "entinfo_basic_info_train.columns = [('_').join(['entinfo_basic_info', col]) if col not in ['CUST_NO', 'FLAG'] else col for col in entinfo_basic_info_train.columns]\n",
    "\n",
    "# 1.2 测试集\n",
    "nature_test_b = pd.read_csv('../contest/B/GTGSH_NATURE_B.csv')\n",
    "asset_test_b = pd.read_csv('../contest/B/GTGSH_ASSET_B.csv')\n",
    "prod_hold_test_b = pd.read_csv('../contest/B/GTGSH_PROD_HOLD_B.csv')\n",
    "tr_ibtf_test_b = pd.read_csv('../contest/B/GTGSH_TR_IBTF_B.csv')\n",
    "tr_tpay_test_b = pd.read_csv('../contest/B/GTGSH_TR_TPAY_B.csv')\n",
    "mb_pageview_dtl_test_b = pd.read_csv('../contest/B/GTGSH_MB_PAGEVIEW_DTL_B.csv')\n",
    "tr_aps_dtl_test_b = pd.read_csv('../contest/B/GTGSH_TR_APS_DTL_B.csv')\n",
    "merch_tr_dtl_test_b = pd.read_csv('../contest/B/GTGSH_MERCH_TR_DTL_B.csv')\n",
    "entinfo_basic_info_test_b = pd.read_csv('../contest/B/GTGSH_ENTINFO_BASIC_INFO_B.csv')\n",
    "target_test_b = pd.read_csv('../contest/B/GTGSH_TARGET_B.csv')\n",
    "\n",
    "# 1.2.1 重命名\n",
    "nature_test_b.columns = [('_').join(['nature', col]) if col not in ['CUST_NO', 'FLAG'] else col for col in nature_test_b.columns]\n",
    "asset_test_b.columns = [('_').join(['asset', col]) if col not in ['CUST_NO', 'FLAG'] else col for col in asset_test_b.columns]\n",
    "prod_hold_test_b.columns = [('_').join(['prod_hold', col]) if col not in ['CUST_NO', 'FLAG'] else col for col in prod_hold_test_b.columns]\n",
    "mb_pageview_dtl_test_b.columns = [('_').join(['mb_pageview_dtl', col]) if col not in ['CUST_NO', 'FLAG'] else col for col in mb_pageview_dtl_test_b.columns]\n",
    "merch_tr_dtl_test_b.columns = [('_').join(['merch_tr_dtl', col]) if col not in ['CUST_NO', 'FLAG'] else col for col in merch_tr_dtl_test_b.columns]\n",
    "entinfo_basic_info_test_b.columns = [('_').join(['entinfo_basic_info', col]) if col not in ['CUST_NO', 'FLAG'] else col for col in entinfo_basic_info_test_b.columns]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "849708e0",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-12-11T03:00:49.353309Z",
     "iopub.status.busy": "2024-12-11T03:00:49.353040Z",
     "iopub.status.idle": "2024-12-11T03:00:49.877607Z",
     "msg_id": "0eee2e8c-6c77-4918-8f42-15d089289ed2",
     "shell.execute_reply": "2024-12-11T03:00:49.876827Z",
     "shell.execute_reply.started": "2024-12-11T03:00:49.353281Z"
    }
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 2/2 [00:00<00:00, 10.51it/s, nature]\n",
      "100%|██████████| 2/2 [00:00<00:00, 20.82it/s, asset]\n",
      "100%|██████████| 2/2 [00:00<00:00, 20.63it/s, ibtf]\n",
      "100%|██████████| 2/2 [00:00<00:00, 21.28it/s, tpay]\n"
     ]
    }
   ],
   "source": [
    "# 2 静态表特征加工\n",
    "# 2.1 自然属性信息表（GTGSH_NATURE）\n",
    "def sex_binning(x):\n",
    "    if x == 'A':\n",
    "        return 1\n",
    "    elif x == 'B':\n",
    "        return 2\n",
    "    else:\n",
    "        return np.nan\n",
    "\n",
    "def rank_binning(x):\n",
    "    if x == 'A':\n",
    "        return 1\n",
    "    elif x == 'B':\n",
    "        return 2\n",
    "    elif x == 'C':\n",
    "        return 3\n",
    "    elif x == 'D':\n",
    "        return 4\n",
    "    elif x == 'E':\n",
    "        return 5\n",
    "    elif x == 'F':\n",
    "        return 6\n",
    "  \n",
    "def age_binning(x):  \n",
    "    if x in ['nan', '']:\n",
    "        return np.nan\n",
    "    elif 0 <= x < 22:\n",
    "        return 1\n",
    "    elif 22 <= x < 65:\n",
    "        return 2\n",
    "    elif x >= 65:\n",
    "        return 3\n",
    "    else:\n",
    "        return 4\n",
    "\n",
    "for df in tqdm([nature_train, nature_test_b], postfix='nature'):\n",
    "    df['nature_NTRL_CUST_SEX_CD'] = df['nature_NTRL_CUST_SEX_CD'].apply(lambda x: sex_binning(x))\n",
    "    df['nature_NTRL_CUST_AGE_CD'] = df['nature_NTRL_CUST_AGE'].apply(lambda x: age_binning(x))\n",
    "    df['nature_NTRL_RANK_CD'] = df['nature_NTRL_RANK_CD'].apply(lambda x: rank_binning(x))\n",
    "    \n",
    "    del df\n",
    "    gc.collect()\n",
    "\n",
    "# 2.2 资产信息表（GTGSH_ASSET）\n",
    "for df in tqdm([asset_train, asset_test_b], postfix='asset'):\n",
    "    # 金融资产 存款+贷款/2\n",
    "    df['asset2_AST_DAY_FA_BAL']=df['asset_AST_DP_BAL']+df['asset_AST_YAVER_DP_BAL']*0.5  # 年日均活期存款余额/年日均存款余额\n",
    "    df['asset2_AST_MAVER_FA_BAL']=df['asset_AST_MAVER_DP_BAL']+df['asset_AST_YAVER_DP_BAL']*0.5  # 年日均活期存款余额/年日均存款余额\n",
    "    df['asset2_AST_SAVER_FA_BAL']=df['asset_AST_SAVER_DP_BAL']+df['asset_AST_YAVER_DP_BAL']*0.5  # 年日均活期存款余额/年日均存款余额\n",
    "    df['asset2_AST_YAVER_FA_BAL']=df['asset_AST_YAVER_DP_BAL']+df['asset_AST_YAVER_DP_BAL']*0.5  # 年日均活期存款余额/年日均存款余额\n",
    "\n",
    "    # AUM 金融资产\n",
    "    df['asset2_DAY_AUM_div_FA']=df['asset_AST_DAY_AUM_BAL']/df['asset2_AST_DAY_FA_BAL']  # 当日AUM余额/当日金融资产余额\n",
    "    df['asset2_MAVER_AUM_div_FA']=df['asset_AST_MAVER_AUM_BAL']/df['asset2_AST_MAVER_FA_BAL']  # 月日均AUM余额/月日均金融资产余额\n",
    "    df['asset2_SAVER_AUM_div_FA']=df['asset_AST_SAVER_AUM_BAL']/df['asset2_AST_SAVER_FA_BAL']  # 季日均AUM余额/季日均金融资产余额\n",
    "    df['asset2_YAVER_AUM_div_FA']=df['asset_AST_YAVER_AUM_BAL']/df['asset2_AST_YAVER_FA_BAL']  # 年日均AUM余额/年日均金融资产余额\n",
    "    \n",
    "    # 存款 AUM\n",
    "    df['asset2_DAY_DP_div_AUM']=df['asset_AST_DP_BAL']/df['asset_AST_DAY_AUM_BAL']  # 存款余额/当日AUM余额\n",
    "    df['asset2_MAVER_DP_div_AUM']=df['asset_AST_MAVER_DP_BAL']/df['asset_AST_MAVER_AUM_BAL']  # 月日均存款余额/月日均AUM余额\n",
    "    df['asset2_SAVER_DP_div_AUM']=df['asset_AST_SAVER_DP_BAL']/df['asset_AST_SAVER_AUM_BAL']  # 季日均存款余额/季日均AUM余额\n",
    "    df['asset2_YAVER_DP_div_AUM']=df['asset_AST_YAVER_DP_BAL']/df['asset_AST_YAVER_AUM_BAL']  # 年日均存款余额/年日均AUM余额\n",
    "    df['asset2_DAY_DPSA_div_AUM']=df['asset_AST_DPSA_BAL']/df['asset_AST_DAY_AUM_BAL']  # 活期存款余额/当日AUM余额\n",
    "    df['asset2_MAVER_DPSA_div_AUM']=df['asset_AST_MAVER_DPSA_BAL']/df['asset_AST_MAVER_AUM_BAL']\n",
    "    df['asset2_SAVER_DPSA_div_AUM']=df['asset_AST_SAVER_DPSA_BAL']/df['asset_AST_SAVER_AUM_BAL']\n",
    "    df['asset2_YAVER_DPSA_div_AUM']=df['asset_AST_YAVER_DPSA_BAL']/df['asset_AST_YAVER_AUM_BAL']\n",
    "    \n",
    "    # 定期存款\n",
    "    df['asset2_AST_TD_BAL']=df['asset_AST_DP_BAL']-df['asset_AST_DPSA_BAL']  # 定期存款余额\n",
    "    df['asset2_DAY_TD_div_DPSA']=df['asset2_AST_TD_BAL']/df['asset_AST_DP_BAL']  # 定期存款余额/存款余额\n",
    "    df['asset2_AST_MAVER_TD_BAL']=df['asset_AST_MAVER_DP_BAL']-df['asset_AST_MAVER_DPSA_BAL']  # 月日均定期存款余额\n",
    "    df['asset2_AST_SAVER_TD_BAL']=df['asset_AST_SAVER_DP_BAL']-df['asset_AST_SAVER_DPSA_BAL']  # 季日均定期存款余额\n",
    "    df['asset2_AST_YAVER_TD_BAL']=df['asset_AST_YAVER_DP_BAL']-df['asset_AST_YAVER_DPSA_BAL']  # 年日均定期存款余额\n",
    "    df['asset2_DAY_TD_div_AUM']=df['asset2_AST_TD_BAL']/df['asset_AST_DAY_AUM_BAL']  # 定期存款余额/当日AUM余额\n",
    "    df['asset2_DPSA_div_DP']=df['asset_AST_DPSA_BAL']/df['asset_AST_DP_BAL']  # 活期存款余额/存款余额\n",
    "    df['asset2_YAVER_DPSA_div_DP']=df['asset_AST_YAVER_DPSA_BAL']/df['asset_AST_YAVER_DP_BAL']  # 年日均活期存款余额/年日均存款余额\n",
    "\n",
    "    # 存贷比 定期存款/贷款\n",
    "    df['asset2_DAY_DPSA_div_LOAN']=df['asset_AST_DPSA_BAL']/df['asset_DEBT_LOAN_BAL']  # 活期存款余额/贷款余额\n",
    "    df['asset2_MAVER_DPSA_div_LOAN']=df['asset_AST_MAVER_DPSA_BAL']/df['asset_DEBT_LOAN_BAL_MAVER']  # 月日均活期存款余额/月日均贷款余额\n",
    "    df['asset2_SAVER_DPSA_div_LOAN']=df['asset_AST_SAVER_DPSA_BAL']/df['asset_DEBT_LOAN_BAL_SAVER']  # 季日均活期存款余额/季日均贷款余额\n",
    "    df['asset2_YAVER_DPSA_div_LOAN']=df['asset_AST_YAVER_DPSA_BAL']/df['asset_DEBT_LOAN_BAL_YAVER']  # 年日均活期存款余额/年日均贷款余额\n",
    "    df['asset2_DAY_DP_div_LOAN']=df['asset_AST_DP_BAL']/df['asset_DEBT_LOAN_BAL']  # 存款余额/贷款余额\n",
    "    df['asset2_MAVER_DP_div_LOAN']=df['asset_AST_MAVER_DP_BAL']/df['asset_DEBT_LOAN_BAL_MAVER']  # 月日均存款余额/月日均贷款余额\n",
    "    df['asset2_SAVER_DP_div_LOAN']=df['asset_AST_SAVER_DP_BAL']/df['asset_DEBT_LOAN_BAL_SAVER']  # 季日均存款余额/季日均贷款余额\n",
    "    df['asset2_YAVER_DP_div_LOAN']=df['asset_AST_YAVER_DP_BAL']/df['asset_DEBT_LOAN_BAL_YAVER']  # 年日均存款余额/年日均贷款余额\n",
    "\n",
    "    del df \n",
    "    gc.collect()\n",
    "\n",
    "# 4 跨行转账信息表（GTGSH_TR_IBTF）\n",
    "for df in tqdm([tr_ibtf_train, tr_ibtf_test_b], postfix='ibtf'):\n",
    "    # 转出笔数\n",
    "    df['IBTF2_TR_CNT_OUT'] = df['IBTF_TR_CNT'] - df['IBTF_TR_CNT_IN']\n",
    "    df['IBTF2_MOTH_TR_CNT_OUT'] = df['IBTF_MOTH_TR_CNT'] - df['IBTF_MOTH_TR_CNT_IN']\n",
    "    df['IBTF2_SEAN_TR_CNT_OUT'] = df['IBTF_SEAN_TR_CNT'] - df['IBTF_SEAN_TR_CNT_IN']\n",
    "    df['IBTF2_YEAR_TR_CNT_OUT'] = df['IBTF_YEAR_TR_CNT'] - df['IBTF_YEAR_TR_CNT_IN']\n",
    "\n",
    "    # 转出转入笔数差\n",
    "    df['IBTF2_TR_CNT_NET'] = df['IBTF2_TR_CNT_OUT'] - df['IBTF_TR_CNT_IN']\n",
    "    df['IBTF2_MOTH_TR_CNT_NET'] = df['IBTF2_MOTH_TR_CNT_OUT'] - df['IBTF_MOTH_TR_CNT_IN']\n",
    "    df['IBTF2_SEAN_TR_CNT_NET'] = df['IBTF2_SEAN_TR_CNT_OUT'] - df['IBTF_SEAN_TR_CNT_IN']\n",
    "    df['IBTF2_YEAR_TR_CNT_NET'] = df['IBTF2_YEAR_TR_CNT_OUT'] - df['IBTF_YEAR_TR_CNT_IN']\n",
    "\n",
    "    # 转出金额\n",
    "    df['IBTF2_TR_AMT_OUT'] = df['IBTF_TR_AMT'] - df['IBTF_TR_AMT_IN']\n",
    "    df['IBTF2_MOTH_TR_AMT_OUT'] = df['IBTF_MOTH_TR_AMT'] - df['IBTF_MOTH_TR_AMT_IN']\n",
    "    df['IBTF2_SEAN_TR_AMT_OUT'] = df['IBTF_SEAN_TR_AMT'] - df['IBTF_SEAN_TR_AMT_IN']\n",
    "    df['IBTF2_YEAR_TR_AMT_OUT'] = df['IBTF_YEAR_TR_AMT'] - df['IBTF_YEAR_TR_AMT_IN']\n",
    "    \n",
    "    # 转出转入金额差\n",
    "    df['IBTF2_TR_AMT_NET'] = df['IBTF2_TR_CNT_OUT'] - df['IBTF_TR_CNT_IN']\n",
    "    df['IBTF2_MOTH_TR_AMT_NET'] = df['IBTF2_MOTH_TR_CNT_OUT'] - df['IBTF_MOTH_TR_CNT_IN']\n",
    "    df['IBTF2_SEAN_TR_AMT_NET'] = df['IBTF2_SEAN_TR_CNT_OUT'] - df['IBTF_SEAN_TR_CNT_IN']\n",
    "    df['IBTF2_YEAR_TR_AMT_NET'] = df['IBTF2_YEAR_TR_CNT_OUT'] - df['IBTF_YEAR_TR_CNT_IN']\n",
    "    \n",
    "    # 净交易/总交易\n",
    "    df['IBTF2_TR_AMT_NET_div_ALL'] = df['IBTF2_TR_AMT_NET'] / df['IBTF_TR_AMT']  # 净交易金额/交易金额\n",
    "    df['IBTF2_MOTH_TR_AMT_NET_div_ALL'] = df['IBTF2_MOTH_TR_AMT_NET'] / df['IBTF_MOTH_TR_AMT']  # 月净交易金额/月交易金额\n",
    "    df['IBTF2_SEAN_TR_AMT_NET_div_ALL'] = df['IBTF2_SEAN_TR_AMT_NET'] / df['IBTF_SEAN_TR_AMT']  # 季净交易金额/季交易金额\n",
    "    df['IBTF2_YEAR_TR_AMT_NET_div_ALL'] = df['IBTF2_YEAR_TR_AMT_NET'] / df['IBTF_YEAR_TR_AMT']  # 年净交易金额/年交易金额\n",
    "\n",
    "    df['IBTF2_TR_CNT_NET_div_ALL'] = df['IBTF2_TR_CNT_NET'] / df['IBTF_TR_CNT']  # 净交易笔数/交易笔数\n",
    "    df['IBTF2_MOTH_TR_CNT_NET_div_ALL'] = df['IBTF2_MOTH_TR_CNT_NET'] / df['IBTF_MOTH_TR_CNT']  # 月净交易笔数/月交易笔数\n",
    "    df['IBTF2_SEAN_TR_CNT_NET_div_ALL'] = df['IBTF2_SEAN_TR_CNT_NET'] / df['IBTF_SEAN_TR_CNT']  # 季净交易笔数/季交易笔数\n",
    "    df['IBTF2_YEAR_TR_CNT_NET_div_ALL'] = df['IBTF2_YEAR_TR_CNT_NET'] / df['IBTF_YEAR_TR_CNT']  # 年净交易笔数/年交易笔数\n",
    "\n",
    "    # 笔均转出转入金额 金额/笔数\n",
    "    df['IBTF2_TR_AMT_IN_each'] = df['IBTF_TR_AMT_IN'] / df['IBTF_TR_CNT_IN']\n",
    "    df['IBTF2_MOTH_TR_AMT_IN_each'] = df['IBTF_MOTH_TR_AMT_IN'] / df['IBTF_MOTH_TR_CNT_IN']\n",
    "    df['IBTF2_SEAN_TR_AMT_IN_each'] = df['IBTF_SEAN_TR_AMT_IN'] / df['IBTF_SEAN_TR_CNT_IN']\n",
    "    df['IBTF2_YEAR_TR_AMT_IN_each'] = df['IBTF_YEAR_TR_AMT_IN'] / df['IBTF_YEAR_TR_CNT_IN']\n",
    "\n",
    "    df['IBTF2_TR_AMT_OUT_each'] = df['IBTF2_TR_AMT_OUT'] / df['IBTF2_TR_CNT_OUT']\n",
    "    df['IBTF2_MOTH_TR_AMT_OUT_each'] = df['IBTF2_MOTH_TR_AMT_OUT'] / df['IBTF2_MOTH_TR_CNT_OUT']\n",
    "    df['IBTF2_SEAN_TR_AMT_OUT_each'] = df['IBTF2_SEAN_TR_AMT_OUT'] / df['IBTF2_SEAN_TR_CNT_OUT']\n",
    "    df['IBTF2_YEAR_TR_AMT_OUT_each'] = df['IBTF2_YEAR_TR_AMT_OUT'] / df['IBTF2_YEAR_TR_CNT_OUT']\n",
    "    \n",
    "    del df \n",
    "    gc.collect()\n",
    "\n",
    "drop_cols = ['DATA_DAT']\n",
    "# 5 第三方支付交易表（GTGSH_TR_TPAY）\n",
    "for df in tqdm([tr_tpay_train, tr_tpay_test_b], postfix='tpay'):\n",
    "    # 其他支付=总-支付宝-财付通\n",
    "    df['TPAY2_OTHER_MOTH_TR_AMT'] = df['TPAY_MOTH_TR_AMT'] - df['TPAY_WX_MOTH_TR_AMT'] - df['TPAY_ALI_MOTH_TR_AMT']\n",
    "    df['TPAY2_OTHER_SEAN_TR_AMT'] = df['TPAY_SEAN_TR_AMT'] - df['TPAY_WX_SEAN_TR_AMT'] - df['TPAY_ALI_SEAN_TR_AMT']\n",
    "\n",
    "    df['TPAY2_OTHER_MOTH_TR_CNT'] = df['TPAY_MOTH_TR_CNT'] - df['TPAY_WX_MOTH_TR_CNT'] - df['TPAY_ALI_MOTH_TR_CNT']\n",
    "    df['TPAY2_OTHER_SEAN_TR_CNT'] = df['TPAY_SEAN_TR_CNT'] - df['TPAY_WX_SEAN_TR_CNT'] - df['TPAY_ALI_SEAN_TR_CNT']\n",
    "\n",
    "    # 净交易/总交易\n",
    "    df['TPAY2_MOTH_NET_TR_AMT_div_ALL'] = df['TPAY_MOTH_NET_TR_AMT'] / df['TPAY_MOTH_TR_AMT']\n",
    "    df['TPAY2_SEAN_NET_TR_AMT_div_ALL'] = df['TPAY_SEAN_NET_TR_AMT'] / df['TPAY_SEAN_TR_AMT']\n",
    "\n",
    "    # 笔均\n",
    "    df['TPAY2_TPAY_MOTH_TR_AMT_each'] = df['TPAY_MOTH_TR_AMT'] / df['TPAY_MOTH_TR_CNT']\n",
    "    df['TPAY2_TPAY_SEAN_TR_AMT_each'] = df['TPAY_SEAN_TR_AMT'] / df['TPAY_SEAN_TR_CNT']\n",
    "\n",
    "    df['TPAY2_TPAY_WX_MOTH_TR_AMT_each'] = df['TPAY_WX_MOTH_TR_AMT'] / df['TPAY_WX_MOTH_TR_CNT']\n",
    "    df['TPAY2_TPAY_WX_SEAN_TR_AMT_each'] = df['TPAY_WX_SEAN_TR_AMT'] / df['TPAY_WX_SEAN_TR_CNT']\n",
    "\n",
    "    df['TPAY2_TPAY_ALI_MOTH_TR_AMT_each'] = df['TPAY_ALI_MOTH_TR_AMT'] / df['TPAY_ALI_MOTH_TR_CNT']\n",
    "    df['TPAY2_TPAY_ALI_SEAN_TR_AMT_each'] = df['TPAY_ALI_SEAN_TR_AMT'] / df['TPAY_ALI_SEAN_TR_CNT']\n",
    "\n",
    "    df['TPAY2_OTHER_MOTH_TR_AMT_each'] = df['TPAY2_OTHER_MOTH_TR_AMT'] / df['TPAY2_OTHER_MOTH_TR_CNT']\n",
    "    df['TPAY2_OTHER_SEAN_TR_AMT_each'] = df['TPAY2_OTHER_SEAN_TR_AMT'] / df['TPAY2_OTHER_SEAN_TR_CNT']\n",
    "\n",
    "    df.drop(drop_cols, axis=1, inplace=True )\n",
    "\n",
    "    del df \n",
    "    gc.collect()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "0299b29f",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-12-11T03:00:49.879938Z",
     "iopub.status.busy": "2024-12-11T03:00:49.879403Z",
     "iopub.status.idle": "2024-12-11T03:01:24.411087Z",
     "msg_id": "70ef325c-5f39-43d0-97c2-1e00b001fa09",
     "shell.execute_reply": "2024-12-11T03:01:24.410277Z",
     "shell.execute_reply.started": "2024-12-11T03:00:49.879909Z"
    },
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 3/3 [00:01<00:00,  2.09it/s]\n",
      "100%|██████████| 3/3 [00:00<00:00, 19.57it/s]\n"
     ]
    }
   ],
   "source": [
    "def get_dense_features(df, col, stat):\n",
    "    if stat == \"kurt\":\n",
    "        f_stat = lambda x: x.kurt()\n",
    "    elif stat == \"quantile_1_4\":\n",
    "        f_stat = lambda x: x.quantile(0.25)\n",
    "    elif stat == \"quantile_1_2\":\n",
    "        f_stat = lambda x: x.quantile(0.5)\n",
    "    else:\n",
    "        f_stat = stat\n",
    "    group_df = df.groupby(['CUST_NO'])[col].agg(f_stat).reset_index()\n",
    "    group_df.columns = ['CUST_NO', 'CUST_NO_'+'{}_'.format(col)+stat]\n",
    "    return group_df\n",
    "    \n",
    "def get_all_dense_features(df_fea, df_to_groupby, stats):\n",
    "    dense_col = [col for col in df_to_groupby.columns if col != \"CUST_NO\"]\n",
    "    for col in tqdm(dense_col):\n",
    "        for stat in tqdm(stats):\n",
    "            df_fea = df_fea.merge(get_dense_features(df_to_groupby, col, stat), on='CUST_NO', how='left')\n",
    "    return df_fea\n",
    "    \n",
    "def get_id_category_features(df_fea, df_to_groupby, fea1, fea2, stat):\n",
    "    tmp = df_to_groupby.groupby(['CUST_NO', fea1])[fea2].agg(\n",
    "        stat if stat != \"kurt\" else lambda x: x.kurt()\n",
    "    ).to_frame(\n",
    "        '_'.join(['CUST_NO', fea1, fea2, stat])\n",
    "    ).reset_index()\n",
    "    \n",
    "    df_tmp = pd.pivot(data=tmp, index='CUST_NO', columns=fea1, values='_'.join(['CUST_NO', fea1, fea2, stat]))  # index: CUST_NO\n",
    "    new_fea_cols = ['_'.join(['CUST_NO', fea1, fea2, stat, str(col)]) for col in df_tmp.columns]\n",
    "    df_tmp.columns = new_fea_cols\n",
    "    df_tmp.reset_index(inplace=True)\n",
    "        \n",
    "    if stat == 'count':\n",
    "        df_tmp = df_tmp.fillna(0)\n",
    "        \n",
    "    # 去掉全NaN列\n",
    "    valid_cols = []\n",
    "    for col in df_tmp.columns:\n",
    "        if not df_tmp[col].isna().all():\n",
    "            valid_cols.append(col)\n",
    "            \n",
    "    df_fea = df_fea.merge(df_tmp[valid_cols], on='CUST_NO', how='left')\n",
    "    return df_fea, new_fea_cols \n",
    "    \n",
    "def get_all_id_category_features(df_fea, df_to_groupby, fea1, fea2, stats):\n",
    "    all_new_fea_cols = []\n",
    "    for stat in tqdm(stats):\n",
    "        df_fea, new_fea_cols = get_id_category_features(df_fea, df_to_groupby, fea1, fea2, stat)\n",
    "        all_new_fea_cols += new_fea_cols\n",
    "    return df_fea, all_new_fea_cols\n",
    "\n",
    "# 6 掌银页面访问明细表(GTGSH_MB_PAGEVIEW_DTL)\n",
    "# 6.1.1 点击模块/页面分组统计量特征\n",
    "def gen_mb_features_by_day(df):\n",
    "    def get_days_to_now(df):\n",
    "        df[\"mb_pageview_dtl_OPERATION_DATE\"] = pd.to_datetime(df[\"mb_pageview_dtl_OPERATION_DATE\"], format=\"%Y%m%d\")\n",
    "        df_months_to_now = (df[\"mb_pageview_dtl_OPERATION_DATE\"].max() - df[\"mb_pageview_dtl_OPERATION_DATE\"]).dt.days\n",
    "        df[\"date_months_to_now\"] = df_months_to_now // 31  # 距今月数\n",
    "        df[\"date_weeks_to_now\"] = df_months_to_now // 7  # 距今周数\n",
    "        df[\"date_days_to_now\"] = df_months_to_now  # 距今天数\n",
    "        return df\n",
    "\n",
    "    def get_max_cnt_days_to_now(df, month):\n",
    "        # 每月日点击数/日点击页面数最大天距今天数\n",
    "        tmp_df_nunique = df.groupby(['CUST_NO']).agg({\"mb_pageview_dtl_PAGE_TITLE_nunique\": \"max\"}).reset_index()  \n",
    "        tmp_df_nunique = tmp_df_nunique.merge(df[['CUST_NO', 'date_days_to_now', 'mb_pageview_dtl_PAGE_TITLE_nunique']], on=[\"CUST_NO\", 'mb_pageview_dtl_PAGE_TITLE_nunique'], how=\"inner\")\n",
    "        tmp_df_nunique = tmp_df_nunique.groupby(['CUST_NO'])[\"date_days_to_now\"].min().to_frame(\"max_nunique_days_to_now_{}\".format(str(month))).reset_index()  # 取最近一天\n",
    "\n",
    "        tmp_df_cnt = df.groupby(['CUST_NO']).agg({\"mb_pageview_dtl_PAGE_TITLE_count\": \"max\"}).reset_index()  \n",
    "        tmp_df_cnt = tmp_df_cnt.merge(df[['CUST_NO', 'date_days_to_now', 'mb_pageview_dtl_PAGE_TITLE_count']], on=[\"CUST_NO\", 'mb_pageview_dtl_PAGE_TITLE_count'], how=\"inner\")\n",
    "        tmp_df_cnt = tmp_df_cnt.groupby(['CUST_NO'])[\"date_days_to_now\"].min().to_frame(\"max_count_days_to_now_{}\".format(str(month))).reset_index()  # 取最近一天\n",
    "            \n",
    "        return tmp_df_nunique, tmp_df_cnt\n",
    "\n",
    "    \"\"\" 1 数据预处理 \"\"\"\n",
    "    # 1.1 日期转换为距最大日期天数\n",
    "    df = df.copy()\n",
    "    df = get_days_to_now(df)\n",
    "    feature = df[[\"CUST_NO\"]].drop_duplicates(['CUST_NO']).copy().reset_index(drop=True)\n",
    "    \n",
    "    # 1.2 按天/交易代码聚合\n",
    "    # 1.2.1 按天聚合\n",
    "    df_by_day = df.groupby([\"CUST_NO\", \"date_days_to_now\", \"date_weeks_to_now\", \"date_months_to_now\"])[\"mb_pageview_dtl_PAGE_TITLE\"].agg(['nunique', 'count'])\n",
    "    df_by_day.columns = ['mb_pageview_dtl_PAGE_TITLE_nunique', 'mb_pageview_dtl_PAGE_TITLE_count']\n",
    "    df_by_day = df_by_day.reset_index()\n",
    "\n",
    "    \"\"\"\" 2 RFM-R: 每月日点击笔数/日点击页面数最大天距今天数 \"\"\"\n",
    "    tmp_feature = df_by_day[[\"CUST_NO\"]].drop_duplicates([\"CUST_NO\"]).copy().reset_index(drop=True)\n",
    "    for month in tqdm([0, 1, 2]):\n",
    "        data_month = df_by_day[df_by_day[\"date_months_to_now\"]==month]\n",
    "        tmp_df_nunique, tmp_df_cnt = get_max_cnt_days_to_now(data_month, month)\n",
    "        tmp_feature = tmp_feature.merge(tmp_df_nunique, how=\"left\", on=\"CUST_NO\")\n",
    "        tmp_feature = tmp_feature.merge(tmp_df_cnt, how=\"left\", on=\"CUST_NO\")\n",
    "    feature = feature.merge(tmp_feature, how=\"left\", on=\"CUST_NO\")\n",
    "\n",
    "    return feature\n",
    "\n",
    "mb_feature_train = gen_mb_features_by_day(mb_pageview_dtl_train)\n",
    "mb_feature_test = gen_mb_features_by_day(mb_pageview_dtl_test_b)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "3973f06e",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-12-11T03:01:24.412788Z",
     "iopub.status.busy": "2024-12-11T03:01:24.412331Z",
     "iopub.status.idle": "2024-12-11T03:15:44.685050Z",
     "msg_id": "f3aa5035-bcec-40af-ab75-ff48b437831e",
     "shell.execute_reply": "2024-12-11T03:15:44.684270Z",
     "shell.execute_reply.started": "2024-12-11T03:01:24.412759Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "len(common_word_model): 1737\n",
      "len(common_word_page): 12781\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 8/8 [05:36<00:00, 42.00s/it]\n",
      "100%|██████████| 8/8 [05:01<00:00, 37.74s/it]\n",
      "100%|██████████| 8/8 [00:33<00:00,  4.20s/it]\n",
      "100%|██████████| 8/8 [00:30<00:00,  3.78s/it]\n"
     ]
    }
   ],
   "source": [
    "# 6.1.2 点击模块/页面拼接分组统计量特征\n",
    "def gen_mb_all_join_op_features_by_days(df_train, df_test):\n",
    "    def get_days_to_now(df):\n",
    "        df[\"mb_pageview_dtl_OPERATION_DATE\"] = pd.to_datetime(df[\"mb_pageview_dtl_OPERATION_DATE\"], format=\"%Y%m%d\")\n",
    "        df_months_to_now = (df[\"mb_pageview_dtl_OPERATION_DATE\"].max() - df[\"mb_pageview_dtl_OPERATION_DATE\"]).dt.days\n",
    "        df[\"date_months_to_now\"] = df_months_to_now // 31  # 距今月数\n",
    "        df[\"date_weeks_to_now\"] = df_months_to_now // 7  # 距今周数\n",
    "        df[\"date_days_to_now\"] = df_months_to_now  # 距今天数   \n",
    "        \n",
    "        return df\n",
    "\n",
    "    def gen_mb_join_op_features_by_days(df_feature, df_model, df_page):\n",
    "        # 1 按天/交易代码聚合：取训练集前60点击模块/页面，用于分组统计\n",
    "        df_model.loc[~df_model['mb_pageview_dtl_REFERRER_MODEL_NAME_text'].isin([\n",
    "            '6bb41067851861502c74edd3b31005ae_6bb41067851861502c74edd3b31005ae',\n",
    "            '5e708d40e993fe1bdb05137c1b332159_6bb41067851861502c74edd3b31005ae',\n",
    "            '7619f114489310d42a8e28428ca63365_7619f114489310d42a8e28428ca63365',\n",
    "            '6bb41067851861502c74edd3b31005ae_a780b0fb118f24e312c529fa155a9842',\n",
    "            '6bb41067851861502c74edd3b31005ae_7619f114489310d42a8e28428ca63365',\n",
    "            'e1db7167ba7354e6f7726a826157b01d_e1db7167ba7354e6f7726a826157b01d',\n",
    "            '7619f114489310d42a8e28428ca63365_6bb41067851861502c74edd3b31005ae',\n",
    "            'a780b0fb118f24e312c529fa155a9842_b3ab3a75ec639b57bcfa5464d2beb2e3',\n",
    "            'a780b0fb118f24e312c529fa155a9842_6bb41067851861502c74edd3b31005ae',\n",
    "            '7619f114489310d42a8e28428ca63365_a780b0fb118f24e312c529fa155a9842',\n",
    "            'a780b0fb118f24e312c529fa155a9842_7619f114489310d42a8e28428ca63365',\n",
    "            'b3ab3a75ec639b57bcfa5464d2beb2e3_6bb41067851861502c74edd3b31005ae',\n",
    "            'b3ab3a75ec639b57bcfa5464d2beb2e3_e0cb9e3e71029836e967b79c6142f269',\n",
    "            '6bb41067851861502c74edd3b31005ae_b3ab3a75ec639b57bcfa5464d2beb2e3',\n",
    "            '5e708d40e993fe1bdb05137c1b332159_7619f114489310d42a8e28428ca63365',\n",
    "            'c99a39f3c62ae02128cdb0acf5c1d2dd_c99a39f3c62ae02128cdb0acf5c1d2dd',\n",
    "            'e0cb9e3e71029836e967b79c6142f269_6bb41067851861502c74edd3b31005ae',\n",
    "            'e1db7167ba7354e6f7726a826157b01d_6bb41067851861502c74edd3b31005ae',\n",
    "            'a780b0fb118f24e312c529fa155a9842_2cadedba80c7b47479e07f67c2f7a02b',\n",
    "            'b3ab3a75ec639b57bcfa5464d2beb2e3_b3ab3a75ec639b57bcfa5464d2beb2e3',\n",
    "            'f140855f513dcf75e3b455684351fbe6_f140855f513dcf75e3b455684351fbe6',\n",
    "            '2cadedba80c7b47479e07f67c2f7a02b_2cadedba80c7b47479e07f67c2f7a02b',\n",
    "            'a780b0fb118f24e312c529fa155a9842_a780b0fb118f24e312c529fa155a9842',\n",
    "            '5a4f90c9f6e5be172c819bc65ee73d09_5a4f90c9f6e5be172c819bc65ee73d09',\n",
    "            'cd17e55565660174030893770260f7c8_cd17e55565660174030893770260f7c8',\n",
    "            'b3ab3a75ec639b57bcfa5464d2beb2e3_7619f114489310d42a8e28428ca63365',\n",
    "            '5e708d40e993fe1bdb05137c1b332159_a780b0fb118f24e312c529fa155a9842',\n",
    "            '2cadedba80c7b47479e07f67c2f7a02b_6bb41067851861502c74edd3b31005ae',\n",
    "            'c99a39f3c62ae02128cdb0acf5c1d2dd_6bb41067851861502c74edd3b31005ae',\n",
    "            '20ff69117c3ad03a177cb47b7a3d6966_20ff69117c3ad03a177cb47b7a3d6966',\n",
    "            '6bb41067851861502c74edd3b31005ae_c99a39f3c62ae02128cdb0acf5c1d2dd',\n",
    "            '2cadedba80c7b47479e07f67c2f7a02b_b3ab3a75ec639b57bcfa5464d2beb2e3',\n",
    "            'f0e4745172d74e9a04b3313dd8a9f4ee_e1db7167ba7354e6f7726a826157b01d',\n",
    "            '6bb41067851861502c74edd3b31005ae_e1db7167ba7354e6f7726a826157b01d',\n",
    "            'a780b0fb118f24e312c529fa155a9842_e1db7167ba7354e6f7726a826157b01d',\n",
    "            '28320f537e764e13b36492518aeebb10_28320f537e764e13b36492518aeebb10',\n",
    "            'e1db7167ba7354e6f7726a826157b01d_a780b0fb118f24e312c529fa155a9842',\n",
    "            'a72547450932263fae5aff76dc29ef1f_6bb41067851861502c74edd3b31005ae',\n",
    "            'b3ab3a75ec639b57bcfa5464d2beb2e3_e1db7167ba7354e6f7726a826157b01d',\n",
    "            'f140855f513dcf75e3b455684351fbe6_6bb41067851861502c74edd3b31005ae',\n",
    "            '6bb41067851861502c74edd3b31005ae_a72547450932263fae5aff76dc29ef1f',\n",
    "            '6bb41067851861502c74edd3b31005ae_20ff69117c3ad03a177cb47b7a3d6966',\n",
    "            'a72547450932263fae5aff76dc29ef1f_a72547450932263fae5aff76dc29ef1f',\n",
    "            '20ff69117c3ad03a177cb47b7a3d6966_6bb41067851861502c74edd3b31005ae',\n",
    "            'cd17e55565660174030893770260f7c8_6bb41067851861502c74edd3b31005ae',\n",
    "            '6bb41067851861502c74edd3b31005ae_cd17e55565660174030893770260f7c8',\n",
    "            '5a4f90c9f6e5be172c819bc65ee73d09_6bb41067851861502c74edd3b31005ae',\n",
    "            '6bb41067851861502c74edd3b31005ae_2cadedba80c7b47479e07f67c2f7a02b',\n",
    "            'e0cb9e3e71029836e967b79c6142f269_e0cb9e3e71029836e967b79c6142f269',\n",
    "            'c99a39f3c62ae02128cdb0acf5c1d2dd_a780b0fb118f24e312c529fa155a9842',\n",
    "            '6bb41067851861502c74edd3b31005ae_523ee61f203b6af0d2e50805b7dc61b5',\n",
    "            '6bb41067851861502c74edd3b31005ae_bade81e9cdfd1389dfa9df5118b258d3',\n",
    "            'c1b479511ffd01f6e9f3ccf238311999_c1b479511ffd01f6e9f3ccf238311999',\n",
    "            '6bb41067851861502c74edd3b31005ae_5a4f90c9f6e5be172c819bc65ee73d09',\n",
    "            'fe701532ade40d76bf1e550ac32dbd8c_fe701532ade40d76bf1e550ac32dbd8c',\n",
    "            '7619f114489310d42a8e28428ca63365_2cadedba80c7b47479e07f67c2f7a02b',\n",
    "            '28320f537e764e13b36492518aeebb10_6bb41067851861502c74edd3b31005ae',\n",
    "            'a780b0fb118f24e312c529fa155a9842_c99a39f3c62ae02128cdb0acf5c1d2dd',\n",
    "            '6bb41067851861502c74edd3b31005ae_c1b479511ffd01f6e9f3ccf238311999',\n",
    "            '6bb41067851861502c74edd3b31005ae_f140855f513dcf75e3b455684351fbe6'\n",
    "        ]), 'mb_pageview_dtl_REFERRER_MODEL_NAME_text'] = 'other'  \n",
    "        df_page.loc[~df_page['mb_pageview_dtl_REFERRER_TITLE_text'].isin([\n",
    "            'c36a4b6527a8a5a74ae2d14492431b61_6bb41067851861502c74edd3b31005ae',\n",
    "            '3f54b3d12dcecc882dccfd4e422360f2_c36a4b6527a8a5a74ae2d14492431b61',\n",
    "            '3f54b3d12dcecc882dccfd4e422360f2_3f54b3d12dcecc882dccfd4e422360f2',\n",
    "            '769dab657beb45bcc1a7b00706de01aa_3f54b3d12dcecc882dccfd4e422360f2',\n",
    "            '428a1709f7945a951928d397b9e35072_fb05b0d0036d613437aefd9b83e6e01f',\n",
    "            '99e968a9ee67ca8a825870088c1ea915_3f54b3d12dcecc882dccfd4e422360f2',\n",
    "            '3f54b3d12dcecc882dccfd4e422360f2_6bb41067851861502c74edd3b31005ae',\n",
    "            '3f54b3d12dcecc882dccfd4e422360f2_8905e029105a9701700df660a8291e46',\n",
    "            '8905e029105a9701700df660a8291e46_99e968a9ee67ca8a825870088c1ea915',\n",
    "            'ff75360da2154fd20952e2f5c03861ef_3f54b3d12dcecc882dccfd4e422360f2',\n",
    "            '3f54b3d12dcecc882dccfd4e422360f2_77cea8b21bd25a752c91d8d4b275f2a5',\n",
    "            '6c9351679754f4ec681e8d3e5146903d_ff75360da2154fd20952e2f5c03861ef',\n",
    "            '3f54b3d12dcecc882dccfd4e422360f2_428a1709f7945a951928d397b9e35072',\n",
    "            '3f54b3d12dcecc882dccfd4e422360f2_ff75360da2154fd20952e2f5c03861ef',\n",
    "            '1ad825ba1e30ef46aee0de447ad16742_8905e029105a9701700df660a8291e46',\n",
    "            'fb05b0d0036d613437aefd9b83e6e01f_769dab657beb45bcc1a7b00706de01aa',\n",
    "            'ff75360da2154fd20952e2f5c03861ef_6c9351679754f4ec681e8d3e5146903d',\n",
    "            'f043e97a2002222169dc0e333d555d2d_3f54b3d12dcecc882dccfd4e422360f2',\n",
    "            '99e968a9ee67ca8a825870088c1ea915_769dab657beb45bcc1a7b00706de01aa',\n",
    "            '8f8869df6bf7afd348c625dc682dbbce_c36a4b6527a8a5a74ae2d14492431b61',\n",
    "            '8905e029105a9701700df660a8291e46_3f54b3d12dcecc882dccfd4e422360f2',\n",
    "            'fb05b0d0036d613437aefd9b83e6e01f_99e968a9ee67ca8a825870088c1ea915',\n",
    "            '72627bd2d3238c1a4a40658db3b8d70e_fb05b0d0036d613437aefd9b83e6e01f',\n",
    "            'fb05b0d0036d613437aefd9b83e6e01f_72627bd2d3238c1a4a40658db3b8d70e',\n",
    "            '8905e029105a9701700df660a8291e46_f043e97a2002222169dc0e333d555d2d',\n",
    "            '853969856754297b22853aa695037fc9_91e383cbe5e01046d016f8d47c46c219',\n",
    "            '77cea8b21bd25a752c91d8d4b275f2a5_3f54b3d12dcecc882dccfd4e422360f2',\n",
    "            'bff7cb808ab4be18f7abb0c9cab60b46_ff75360da2154fd20952e2f5c03861ef',\n",
    "            '3f54b3d12dcecc882dccfd4e422360f2_1ad825ba1e30ef46aee0de447ad16742',\n",
    "            '57fc4d942ccb0bf5535f64729f9582fd_3f54b3d12dcecc882dccfd4e422360f2',\n",
    "            'b6ad9a0d78229fbcb28f35aeb91cefc8_853969856754297b22853aa695037fc9',\n",
    "            '6bb41067851861502c74edd3b31005ae_428a1709f7945a951928d397b9e35072',\n",
    "            'ff75360da2154fd20952e2f5c03861ef_bff7cb808ab4be18f7abb0c9cab60b46',\n",
    "            '57fc4d942ccb0bf5535f64729f9582fd_769dab657beb45bcc1a7b00706de01aa',\n",
    "            '8f8869df6bf7afd348c625dc682dbbce_8f8869df6bf7afd348c625dc682dbbce',\n",
    "            '101b4aaf2f1ec72c768452000c23b0d6_3f54b3d12dcecc882dccfd4e422360f2',\n",
    "            'fb05b0d0036d613437aefd9b83e6e01f_57fc4d942ccb0bf5535f64729f9582fd',\n",
    "            '769dab657beb45bcc1a7b00706de01aa_8905e029105a9701700df660a8291e46',\n",
    "            'd27e130e830875eb72112df1a624672a_fb05b0d0036d613437aefd9b83e6e01f',\n",
    "            'f043e97a2002222169dc0e333d555d2d_769dab657beb45bcc1a7b00706de01aa',\n",
    "            '77cea8b21bd25a752c91d8d4b275f2a5_99e968a9ee67ca8a825870088c1ea915',\n",
    "            '8905e029105a9701700df660a8291e46_101b4aaf2f1ec72c768452000c23b0d6',\n",
    "            '769dab657beb45bcc1a7b00706de01aa_8f8869df6bf7afd348c625dc682dbbce',\n",
    "            '793752b99fc71532ccc63272460343b3_ff75360da2154fd20952e2f5c03861ef',\n",
    "            '99e968a9ee67ca8a825870088c1ea915_8f8869df6bf7afd348c625dc682dbbce',\n",
    "            '8905e029105a9701700df660a8291e46_8905e029105a9701700df660a8291e46',\n",
    "            'ff75360da2154fd20952e2f5c03861ef_793752b99fc71532ccc63272460343b3',\n",
    "            'a2d0b7e86b75c770a551ae9bb7d2396b_e2c68fd221520adf8524e01c9d65bc78',\n",
    "            '58ebef9a73a7a5d4f4f97b286ab5dbff_41c1974bb6a577025b063a7a6ec72c71',\n",
    "            '91e383cbe5e01046d016f8d47c46c219_fb05b0d0036d613437aefd9b83e6e01f',\n",
    "            'fb05b0d0036d613437aefd9b83e6e01f_f043e97a2002222169dc0e333d555d2d',\n",
    "            '428a1709f7945a951928d397b9e35072_6bb41067851861502c74edd3b31005ae',\n",
    "            'd93b3061f844b2762c270f1fd83b5037_c36a4b6527a8a5a74ae2d14492431b61',\n",
    "            'fb05b0d0036d613437aefd9b83e6e01f_428a1709f7945a951928d397b9e35072',\n",
    "            '428a1709f7945a951928d397b9e35072_b6ad9a0d78229fbcb28f35aeb91cefc8',\n",
    "            'd27e130e830875eb72112df1a624672a_d27e130e830875eb72112df1a624672a',\n",
    "            '3f54b3d12dcecc882dccfd4e422360f2_d93b3061f844b2762c270f1fd83b5037',\n",
    "            '71e9de08aa765dd5f525fbdd4e8fae7a_3f54b3d12dcecc882dccfd4e422360f2',\n",
    "            '8905e029105a9701700df660a8291e46_4cf0659b76a5dabd0de166c9ec92d678',\n",
    "            '77cea8b21bd25a752c91d8d4b275f2a5_77cea8b21bd25a752c91d8d4b275f2a5'\n",
    "        ]), 'mb_pageview_dtl_REFERRER_TITLE_text'] = 'other'\n",
    "        df_by_day_pages = df_page.groupby([\"CUST_NO\", \"date_days_to_now\", \"date_weeks_to_now\", \"date_months_to_now\", 'mb_pageview_dtl_REFERRER_TITLE_text'])[\"mb_pageview_dtl_REFERRER_TITLE_text\"].agg(['count'])\n",
    "        df_by_day_pages = df_by_day_pages.reset_index()\n",
    "        df_by_day_models = df_model.groupby([\"CUST_NO\", \"date_days_to_now\", \"date_weeks_to_now\", \"date_months_to_now\", 'mb_pageview_dtl_REFERRER_MODEL_NAME_text'])[\"mb_pageview_dtl_REFERRER_MODEL_NAME_text\"].agg(['count'])    \n",
    "        df_by_day_models = df_by_day_models.reset_index()\n",
    "        \n",
    "        \"\"\" 2 页面/模块拼接分组点击数趋势 \"\"\"\n",
    "        # 2.1 日页面拼接分组点击数趋势\n",
    "        df_feature, _ = get_all_id_category_features(\n",
    "                        df_feature, df_by_day_pages, fea1='mb_pageview_dtl_REFERRER_TITLE_text', fea2='count',\n",
    "                        stats=['mean', 'max', 'min', 'median', 'std', 'sum', \"skew\", \"kurt\"]\n",
    "                    )\n",
    "        # 2.2 日模块拼接分组点击数趋势\n",
    "        df_feature, _ = get_all_id_category_features(\n",
    "                        df_feature, df_by_day_models, fea1='mb_pageview_dtl_REFERRER_MODEL_NAME_text', fea2='count',\n",
    "                        stats=['mean', 'max', 'min', 'median', 'std', 'sum', \"skew\", \"kurt\"]\n",
    "                    )    \n",
    "        return df_feature\n",
    "    \n",
    "    feature_train = df_train[[\"CUST_NO\"]].drop_duplicates(['CUST_NO']).copy().reset_index(drop=True)\n",
    "    feature_test = df_test[[\"CUST_NO\"]].drop_duplicates(['CUST_NO']).copy().reset_index(drop=True)\n",
    "    \n",
    "    # 1.1 日期转换\n",
    "    df_train = get_days_to_now(df_train).copy()\n",
    "    df_test = get_days_to_now(df_test).copy()\n",
    "    \n",
    "    # 1.2 获取字典\n",
    "    df_encode = pd.concat([df_train, df_test], axis=0)\n",
    "    df_encode = df_encode[['mb_pageview_dtl_MODEL_NAME','mb_pageview_dtl_PAGE_TITLE']].drop_duplicates()\n",
    "    page2model_dict = dict(zip(df_encode['mb_pageview_dtl_PAGE_TITLE'], df_encode['mb_pageview_dtl_MODEL_NAME']))\n",
    "\n",
    "    # 2 点击模块拼接\n",
    "    # 2.1 训练集\n",
    "    df_train['mb_pageview_dtl_REFERRER_MODEL_NAME'] = df_train['mb_pageview_dtl_REFERRER_TITLE'].map(page2model_dict)\n",
    "    df_model_train = df_train[['CUST_NO', 'mb_pageview_dtl_REFERRER_MODEL_NAME', 'mb_pageview_dtl_MODEL_NAME', 'date_days_to_now', \"date_weeks_to_now\", 'date_months_to_now']].copy()\n",
    "    df_model_train['mb_pageview_dtl_REFERRER_MODEL_NAME_text'] = df_model_train['mb_pageview_dtl_REFERRER_MODEL_NAME'].astype(str) + '_' + df_train['mb_pageview_dtl_MODEL_NAME'].astype(str)\n",
    "\n",
    "    # 2.2 测试集\n",
    "    df_test['mb_pageview_dtl_REFERRER_MODEL_NAME'] = df_test['mb_pageview_dtl_REFERRER_TITLE'].map(page2model_dict)\n",
    "    df_model_test = df_test[['CUST_NO', 'mb_pageview_dtl_REFERRER_MODEL_NAME', 'mb_pageview_dtl_MODEL_NAME', 'date_days_to_now', \"date_weeks_to_now\", 'date_months_to_now']].copy()\n",
    "    df_model_test['mb_pageview_dtl_REFERRER_MODEL_NAME_text'] = df_model_test['mb_pageview_dtl_REFERRER_MODEL_NAME'].astype(str) + '_' + df_test['mb_pageview_dtl_MODEL_NAME'].astype(str)\n",
    "    \n",
    "    # 2.3 筛选共有点击模块记录\n",
    "    common_word_model = set(df_model_train[\"mb_pageview_dtl_REFERRER_MODEL_NAME_text\"]).intersection(set(df_model_test[\"mb_pageview_dtl_REFERRER_MODEL_NAME_text\"]))\n",
    "    df_model_train = df_model_train[df_model_train['mb_pageview_dtl_REFERRER_MODEL_NAME_text'].isin(common_word_model)].copy()\n",
    "    df_model_test = df_model_test[df_model_test['mb_pageview_dtl_REFERRER_MODEL_NAME_text'].isin(common_word_model)].copy()\n",
    "    print('len(common_word_model): {}'.format(len(common_word_model)))\n",
    "\n",
    "    # 3 点击页面拼接\n",
    "    # 3.1 训练集\n",
    "    df_page_train = df_train[['CUST_NO', 'mb_pageview_dtl_REFERRER_TITLE', 'mb_pageview_dtl_PAGE_TITLE', 'date_days_to_now', \"date_weeks_to_now\", 'date_months_to_now']].copy()\n",
    "    df_page_train['mb_pageview_dtl_REFERRER_TITLE_text'] = df_train['mb_pageview_dtl_PAGE_TITLE'].astype(str) + '_' + df_train['mb_pageview_dtl_REFERRER_TITLE'].astype(str)\n",
    "\n",
    "    # 3.2 测试集\n",
    "    df_page_test = df_test[['CUST_NO', 'mb_pageview_dtl_REFERRER_TITLE', 'mb_pageview_dtl_PAGE_TITLE', 'date_days_to_now', \"date_weeks_to_now\", 'date_months_to_now']].copy()\n",
    "    df_page_test['mb_pageview_dtl_REFERRER_TITLE_text'] = df_test['mb_pageview_dtl_PAGE_TITLE'].astype(str) + '_' + df_test['mb_pageview_dtl_REFERRER_TITLE'].astype(str)\n",
    "    \n",
    "    # 3.3 筛选共有点击模块记录\n",
    "    common_word_page = set(df_page_train[\"mb_pageview_dtl_REFERRER_TITLE_text\"]).intersection(set(df_page_test[\"mb_pageview_dtl_REFERRER_TITLE_text\"]))\n",
    "    df_page_train = df_page_train[df_page_train['mb_pageview_dtl_REFERRER_TITLE_text'].isin(common_word_page)].copy()\n",
    "    df_page_test = df_page_test[df_page_test['mb_pageview_dtl_REFERRER_TITLE_text'].isin(common_word_page)].copy()\n",
    "    print('len(common_word_page): {}'.format(len(common_word_page)))\n",
    "\n",
    "    # 4 模块/页面拼接分组统计\n",
    "    feature_train = gen_mb_join_op_features_by_days(feature_train, df_model_train, df_page_train)\n",
    "    feature_test = gen_mb_join_op_features_by_days(feature_test, df_model_test, df_page_test)\n",
    "    \n",
    "    return feature_train, feature_test\n",
    "\n",
    "mb_join_op_feature_train, mb_join_op_feature_test = gen_mb_all_join_op_features_by_days(mb_pageview_dtl_train, mb_pageview_dtl_test_b)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "2b808ba4",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-12-11T03:15:44.686539Z",
     "iopub.status.busy": "2024-12-11T03:15:44.686087Z",
     "iopub.status.idle": "2024-12-11T03:15:44.863915Z",
     "msg_id": "6ac81992-bb64-4a9a-9d6d-689e4af42a42",
     "shell.execute_reply": "2024-12-11T03:15:44.863250Z",
     "shell.execute_reply.started": "2024-12-11T03:15:44.686510Z"
    }
   },
   "outputs": [],
   "source": [
    "pkl_name = './feature/20241101_mb_join_op_B.pkl'\n",
    "if os.path.exists(pkl_name):\n",
    "    \n",
    "    with open(pkl_name, 'rb') as f:\n",
    "        mb_join_op_feature_train, mb_join_op_feature_test = pickle.load(f)\n",
    "else:\n",
    "    # 保存特征\n",
    "    with open(pkl_name, 'wb') as f:\n",
    "        pickle.dump([mb_join_op_feature_train, mb_join_op_feature_test], f)      "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "ace7d7ae",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-12-11T03:15:44.865406Z",
     "iopub.status.busy": "2024-12-11T03:15:44.864946Z",
     "iopub.status.idle": "2024-12-11T03:18:07.409637Z",
     "msg_id": "0d78f59e-b24c-4899-b210-48f0c0a04c86",
     "shell.execute_reply": "2024-12-11T03:18:07.408829Z",
     "shell.execute_reply.started": "2024-12-11T03:15:44.865379Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "len(common_word_page): 12781\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 1/1 [00:25<00:00, 25.53s/it]\n",
      "100%|██████████| 1/1 [00:01<00:00,  1.93s/it]\n"
     ]
    }
   ],
   "source": [
    "# 6.1.3 top30模块点击页面数统计量特征\n",
    "def gen_mb_all_join_op_unique_features_by_days(df_train, df_test):\n",
    "    def get_days_to_now(df):\n",
    "        df[\"mb_pageview_dtl_OPERATION_DATE\"] = pd.to_datetime(df[\"mb_pageview_dtl_OPERATION_DATE\"], format=\"%Y%m%d\")\n",
    "        df_months_to_now = (df[\"mb_pageview_dtl_OPERATION_DATE\"].max() - df[\"mb_pageview_dtl_OPERATION_DATE\"]).dt.days\n",
    "        df[\"date_months_to_now\"] = df_months_to_now // 31  # 距今月数\n",
    "        df[\"date_weeks_to_now\"] = df_months_to_now // 7  # 距今周数\n",
    "        df[\"date_days_to_now\"] = df_months_to_now  # 距今天数\n",
    "        return df\n",
    "\n",
    "    def gen_mb_join_op_unique_features_by_days(df_feature, df_page):\n",
    "        \"\"\" 1 训练集前29点击模块/页面，用于分组统计 \"\"\"\n",
    "        df_page.loc[~df_page['mb_pageview_dtl_MODEL_NAME'].isin([\n",
    "            '6bb41067851861502c74edd3b31005ae', '7619f114489310d42a8e28428ca63365',\n",
    "            'a780b0fb118f24e312c529fa155a9842', 'e1db7167ba7354e6f7726a826157b01d',\n",
    "            'b3ab3a75ec639b57bcfa5464d2beb2e3', 'c99a39f3c62ae02128cdb0acf5c1d2dd',\n",
    "            'e0cb9e3e71029836e967b79c6142f269', '2cadedba80c7b47479e07f67c2f7a02b',\n",
    "            '5a4f90c9f6e5be172c819bc65ee73d09', 'cd17e55565660174030893770260f7c8',\n",
    "            '20ff69117c3ad03a177cb47b7a3d6966', 'f140855f513dcf75e3b455684351fbe6',\n",
    "            'a72547450932263fae5aff76dc29ef1f', '28320f537e764e13b36492518aeebb10',\n",
    "            'bade81e9cdfd1389dfa9df5118b258d3', '523ee61f203b6af0d2e50805b7dc61b5',\n",
    "            'c1b479511ffd01f6e9f3ccf238311999', 'fe701532ade40d76bf1e550ac32dbd8c',\n",
    "            '88db44359c053d1989c43c0e69652975', '7c42e1852b5a3fa3b0bbc1fff431958c',\n",
    "            '69cdc714cc82357d6d14131061e80227', '3c6673e80b4f74dab2ce27530ae393e4',\n",
    "            '25d754f6b857dc6cabe02b263a4fa697', '05b5906aa7a7ef64195ca4f243853047',\n",
    "            '88d83f7e86e003079b222181b5d1b194', '4e7c58f42884ce032919b92a08c9fc99',\n",
    "            '09978ce4d848c0ac52556012354ea4db', '74906157273559b39569e8b700f1dd22',\n",
    "            'a3540cb52f999506df3147b758612733', \n",
    "            # 'd26448f9e42a1681b56a3011a4f78894'\n",
    "        ]), 'mb_pageview_dtl_MODEL_NAME'] = 'other'\n",
    "        df_page = df_page[df_page['mb_pageview_dtl_MODEL_NAME'] != 'other']\n",
    "        \n",
    "        \"\"\" 2 top29模块页面/模块拼接点击深度 \"\"\"\n",
    "        df_feature, _ = get_all_id_category_features(\n",
    "                        df_feature, df_page, fea1='mb_pageview_dtl_MODEL_NAME', fea2='mb_pageview_dtl_REFERRER_TITLE_text',\n",
    "                        stats=['nunique']\n",
    "                    ) \n",
    "\n",
    "        \"\"\" 3 top29模块点击数/点击页面数最大值距今天数 \"\"\"\n",
    "        df_feature = get_max_cnt_days_to_now_by_model(df_feature, df_page)\n",
    "\n",
    "        return df_feature\n",
    "        \n",
    "    def get_max_cnt_days_to_now_by_model(df_feature, df):\n",
    "        # 每月top30模块日点击笔数/日点击页面数最大天距今天数\n",
    "        df1 = df.groupby([\"CUST_NO\", \"date_days_to_now\", \"date_weeks_to_now\", \"date_months_to_now\", 'mb_pageview_dtl_MODEL_NAME'])[\"mb_pageview_dtl_REFERRER_TITLE_text\"].agg(['nunique'])    \n",
    "        df1 = df1.reset_index()        \n",
    "        df2 = df.groupby([\"CUST_NO\", \"date_days_to_now\", \"date_weeks_to_now\", \"date_months_to_now\", 'mb_pageview_dtl_MODEL_NAME'])[\"mb_pageview_dtl_REFERRER_TITLE_text\"].agg(['count'])    \n",
    "        df2 = df2.reset_index()\n",
    "\n",
    "        tmp_df_nunique = df1.groupby(['CUST_NO', 'mb_pageview_dtl_MODEL_NAME']).agg({\"nunique\": \"max\"}).reset_index()\n",
    "        tmp_df_nunique = tmp_df_nunique.merge(df1[['CUST_NO', 'mb_pageview_dtl_MODEL_NAME', 'date_days_to_now', 'nunique']], on=[\"CUST_NO\", 'mb_pageview_dtl_MODEL_NAME', 'nunique'], how=\"inner\")\n",
    "        tmp_df_nunique = tmp_df_nunique.groupby(['CUST_NO', 'mb_pageview_dtl_MODEL_NAME'])[\"date_days_to_now\"].min().to_frame(\"max_nunique_days_to_now\").reset_index()  # 取最近一天\n",
    "    \n",
    "        tmp_df_nunique = pd.pivot(data=tmp_df_nunique, index='CUST_NO', columns='mb_pageview_dtl_MODEL_NAME', values='max_nunique_days_to_now')\n",
    "        new_fea_cols = ['_'.join(['CUST_NO', 'max_nunique_days_to_now', str(col)]) for col in tmp_df_nunique.columns]\n",
    "        tmp_df_nunique.columns = new_fea_cols\n",
    "        tmp_df_nunique.reset_index(inplace=True)\n",
    "        \n",
    "        tmp_df_count = df2.groupby(['CUST_NO', 'mb_pageview_dtl_MODEL_NAME']).agg({\"count\": \"max\"}).reset_index()\n",
    "        tmp_df_count = tmp_df_count.merge(df2[['CUST_NO', 'mb_pageview_dtl_MODEL_NAME', 'date_days_to_now', 'count']], on=[\"CUST_NO\", 'mb_pageview_dtl_MODEL_NAME', 'count'], how=\"inner\")\n",
    "        tmp_df_count = tmp_df_count.groupby(['CUST_NO', 'mb_pageview_dtl_MODEL_NAME'])[\"date_days_to_now\"].min().to_frame(\"max_count_days_to_now\").reset_index()  # 取最近一天\n",
    "    \n",
    "        tmp_df_count = pd.pivot(data=tmp_df_count, index='CUST_NO', columns='mb_pageview_dtl_MODEL_NAME', values='max_count_days_to_now')\n",
    "        new_fea_cols = ['_'.join(['CUST_NO', 'max_count_days_to_now', str(col)]) for col in tmp_df_count.columns]\n",
    "        tmp_df_count.columns = new_fea_cols\n",
    "        tmp_df_count.reset_index(inplace=True)\n",
    "\n",
    "        df_feature = df_feature.merge(tmp_df_nunique, on=\"CUST_NO\", how=\"left\")\n",
    "        df_feature = df_feature.merge(tmp_df_count, on=\"CUST_NO\", how=\"left\")\n",
    "            \n",
    "        return df_feature\n",
    "        \n",
    "    feature_train = df_train[[\"CUST_NO\"]].drop_duplicates(['CUST_NO']).copy().reset_index(drop=True)\n",
    "    feature_test = df_test[[\"CUST_NO\"]].drop_duplicates(['CUST_NO']).copy().reset_index(drop=True)\n",
    "    \n",
    "    # 1.1 日期转换\n",
    "    df_train = get_days_to_now(df_train).copy()\n",
    "    df_test = get_days_to_now(df_test).copy()\n",
    "\n",
    "    # 2 点击模块拼接\n",
    "    # 2.1 训练集\n",
    "    df_page_train = df_train[['CUST_NO', 'mb_pageview_dtl_MODEL_NAME', 'mb_pageview_dtl_REFERRER_TITLE', 'mb_pageview_dtl_PAGE_TITLE',                \n",
    "        'date_days_to_now', \"date_weeks_to_now\", 'date_months_to_now']].copy()\n",
    "    df_page_train['mb_pageview_dtl_REFERRER_TITLE_text'] = df_train['mb_pageview_dtl_PAGE_TITLE'].astype(str) + '_' + df_train['mb_pageview_dtl_REFERRER_TITLE'].astype(str)\n",
    "    \n",
    "    # 2.2 测试集\n",
    "    df_page_test = df_test[['CUST_NO', 'mb_pageview_dtl_MODEL_NAME', 'mb_pageview_dtl_REFERRER_TITLE', 'mb_pageview_dtl_PAGE_TITLE', \n",
    "        'date_days_to_now', \"date_weeks_to_now\", 'date_months_to_now']].copy()\n",
    "    df_page_test['mb_pageview_dtl_REFERRER_TITLE_text'] = df_test['mb_pageview_dtl_PAGE_TITLE'].astype(str) + '_' + df_test['mb_pageview_dtl_REFERRER_TITLE'].astype(str)\n",
    "\n",
    "    # 2.3 筛选共有点击页面记录\n",
    "    common_word_page = set(df_page_train[\"mb_pageview_dtl_REFERRER_TITLE_text\"]).intersection(set(df_page_test[\"mb_pageview_dtl_REFERRER_TITLE_text\"]))\n",
    "    df_page_train = df_page_train[df_page_train['mb_pageview_dtl_REFERRER_TITLE_text'].isin(common_word_page)].copy()\n",
    "    df_page_test = df_page_test[df_page_test['mb_pageview_dtl_REFERRER_TITLE_text'].isin(common_word_page)].copy()\n",
    "    print('len(common_word_page): {}'.format(len(common_word_page)))\n",
    "\n",
    "    # 4 模块/页面拼接分组统计\n",
    "    feature_train = gen_mb_join_op_unique_features_by_days(feature_train, df_page_train)\n",
    "    feature_test = gen_mb_join_op_unique_features_by_days(feature_test, df_page_test)\n",
    "\n",
    "    return feature_train, feature_test\n",
    "\n",
    "mb_join_op_unique_feature_train, mb_join_op_unique_feature_test = gen_mb_all_join_op_unique_features_by_days(mb_pageview_dtl_train, mb_pageview_dtl_test_b)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "c26f630d",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-12-11T03:18:07.411114Z",
     "iopub.status.busy": "2024-12-11T03:18:07.410738Z",
     "iopub.status.idle": "2024-12-11T03:18:07.442092Z",
     "msg_id": "fa1c831f-9b4c-4b68-a608-6f2b68209806",
     "shell.execute_reply": "2024-12-11T03:18:07.441444Z",
     "shell.execute_reply.started": "2024-12-11T03:18:07.411086Z"
    }
   },
   "outputs": [],
   "source": [
    "pkl_name = './feature/20241101_mb_join_op_unique_B.pkl'\n",
    "if os.path.exists(pkl_name):\n",
    "    with open(pkl_name, 'rb') as f:\n",
    "        mb_join_op_unique_feature_train, mb_join_op_unique_feature_test = pickle.load(f) \n",
    "else:\n",
    "    # 保存特征\n",
    "    with open(pkl_name, 'wb') as f:\n",
    "        pickle.dump([mb_join_op_unique_feature_train, mb_join_op_unique_feature_test], f)  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "d10d6ab6",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-12-11T03:18:07.445070Z",
     "iopub.status.busy": "2024-12-11T03:18:07.444798Z",
     "iopub.status.idle": "2024-12-11T03:20:59.566543Z",
     "msg_id": "05204773-2b45-4127-a75a-03d05ea71b8d",
     "shell.execute_reply": "2024-12-11T03:20:59.565730Z",
     "shell.execute_reply.started": "2024-12-11T03:18:07.445045Z"
    },
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "begin train word2vec\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/tmp/ipykernel_1681/1924536142.py:14: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  data[col2] = data[col2].astype(str)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0    6626417\n",
      "2    5940891\n",
      "1    5706478\n",
      "Name: date_months_to_now, dtype: int64\n",
      "                            CUST_NO  date_months_to_now  \\\n",
      "0  0000436ed9d65dd70f8ccc904947595e                   0   \n",
      "1  0000436ed9d65dd70f8ccc904947595e                   1   \n",
      "2  0000436ed9d65dd70f8ccc904947595e                   2   \n",
      "3  00005a3b6d6ad8a3624d07622caf2c3f                   0   \n",
      "4  00005a3b6d6ad8a3624d07622caf2c3f                   1   \n",
      "\n",
      "            mb_pageview_dtl_REFERRER_MDDEL_NAME_text  \n",
      "0  [6bb41067851861502c74edd3b31005ae_6bb410678518...  \n",
      "1  [7619f114489310d42a8e28428ca63365_7619f1144893...  \n",
      "2  [7619f114489310d42a8e28428ca63365_a780b0fb118f...  \n",
      "3  [a780b0fb118f24e312c529fa155a9842_6bb410678518...  \n",
      "4  [7619f114489310d42a8e28428ca63365_7619f1144893...  \n",
      "150550\n",
      "39\n",
      "load model\n",
      "begin make feature\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 150550/150550 [01:22<00:00, 1831.40it/s]\n"
     ]
    }
   ],
   "source": [
    "# 6.2.1 操作模块Word2Vec特征\n",
    "import os\n",
    "import random\n",
    "from gensim.models import Word2Vec\n",
    "def set_seed(seed=2020):\n",
    "    random.seed(seed)\n",
    "    os.environ['PYTHONHASHSEED'] = str(seed)\n",
    "    np.random.seed(seed)\n",
    "set_seed(2020)\n",
    "\n",
    "def get_w2v_feature(data, col1, col2, emb_size, type_, ext, feature=[]):\n",
    "    print('begin train word2vec')\n",
    "    data = data[col1 +[col2]]\n",
    "    data[col2] = data[col2].astype(str)\n",
    "    print(data['date_months_to_now'].value_counts())\n",
    "    \n",
    "    tmp = data.groupby(col1)[col2].apply(lambda x:list(x)).reset_index()\n",
    "    sentences = tmp[col2].values.tolist()\n",
    "    print(tmp.head())\n",
    "    print(len(sentences))\n",
    "    print(len(sentences[0]))\n",
    "    del tmp[col2]\n",
    "    \n",
    "    if os.path.exists('./feature/{}_{}_feature{}_{}.model'.format('_'.join(col1),col2, ext, type_)):\n",
    "        print(\"load model\")\n",
    "        model = Word2Vec.load('./feature/{}_{}_feature{}_{}.model'.format('_'.join(col1),col2, ext, type_))\n",
    "    else:\n",
    "        print(\"new model\")\n",
    "        model = Word2Vec(sentences, vector_size=emb_size, window=10, min_count=1, sg=1, seed=42, epochs=10, workers=1)\n",
    "        model.save('./feature/{}_{}_feature{}_{}.model'.format('_'.join(col1),col2, ext, type_))\n",
    "    emb_matrix = []\n",
    "    emb_dict = {}\n",
    "    \n",
    "    # CUST_NO不重复\n",
    "    print('begin make feature')\n",
    "    for seq in tqdm(sentences):\n",
    "        vec = []\n",
    "        for w in seq:\n",
    "            vocab = model.wv\n",
    "            if w in vocab:\n",
    "                vec.append(vocab[w])  # 句矩阵\n",
    "                emb_dict[w] = vocab[w]  # 词汇矩阵\n",
    "        if len(vec) > 0:\n",
    "            emb_matrix.append(np.mean(vec, axis=0))  # 求平均\n",
    "        else:\n",
    "            emb_matrix.append([0] * emb_size)  # model中没有则填0\n",
    "            \n",
    "    emb_matrix = np.array(emb_matrix)\n",
    "    for i in range(emb_size):\n",
    "        tmp['{}_{}_emb_{}_{}'.format('_'.join(col1), col2, i, ext)] = emb_matrix[:, i] # 每一列单独赋值 成特征\n",
    "        feature.append('{}_{}_emb_{}_{}'.format('_'.join(col1), col2, i,ext))\n",
    "    del model, emb_matrix, sentences\n",
    "    \n",
    "    return tmp, feature\n",
    "\n",
    "def gen_embed(df_train, df_test, abstract):\n",
    "\n",
    "    def get_days_to_now(df):\n",
    "        df[\"mb_pageview_dtl_OPERATION_DATE\"] = pd.to_datetime(df[\"mb_pageview_dtl_OPERATION_DATE\"], format=\"%Y%m%d\")\n",
    "        df_months_to_now = (df[\"mb_pageview_dtl_OPERATION_DATE\"].max() - df[\"mb_pageview_dtl_OPERATION_DATE\"]).dt.days\n",
    "        df[\"date_months_to_now\"] = df_months_to_now // 31  # 距今月数\n",
    "        df[\"date_weeks_to_now\"] = df_months_to_now // 7  # 距今周数\n",
    "        df[\"date_days_to_now\"] = df_months_to_now  # 距今天数\n",
    "        \n",
    "        return df\n",
    "    \n",
    "    # 日期转换\n",
    "    df_train = get_days_to_now(df_train)\n",
    "    df_test = get_days_to_now(df_test)\n",
    "\n",
    "    # 上一个操作模块\n",
    "    df = pd.concat([df_train, df_test], axis=0)\n",
    "    df = df[['mb_pageview_dtl_MODEL_NAME','mb_pageview_dtl_PAGE_TITLE']].drop_duplicates()\n",
    "    page2model_dict = dict(zip(df['mb_pageview_dtl_PAGE_TITLE'], df['mb_pageview_dtl_MODEL_NAME']))\n",
    "    df_train['mb_pageview_dtl_REFERRER_MDDEL_NAME'] = df_train['mb_pageview_dtl_REFERRER_TITLE'].map(page2model_dict)\n",
    "    df_test['mb_pageview_dtl_REFERRER_MDDEL_NAME'] = df_test['mb_pageview_dtl_REFERRER_TITLE'].map(page2model_dict)\n",
    "\n",
    "    temp1 = df_train[['CUST_NO', 'mb_pageview_dtl_REFERRER_MDDEL_NAME', 'mb_pageview_dtl_MODEL_NAME', 'date_months_to_now']].copy()\n",
    "    temp2 = df_test[['CUST_NO', 'mb_pageview_dtl_REFERRER_MDDEL_NAME', 'mb_pageview_dtl_MODEL_NAME', 'date_months_to_now']].copy()\n",
    "\n",
    "    # 文本拼接\n",
    "    temp1['mb_pageview_dtl_REFERRER_MDDEL_NAME_text'] = df_train['mb_pageview_dtl_REFERRER_MDDEL_NAME'].astype(str) + '_' + df_train['mb_pageview_dtl_MODEL_NAME'].astype(str)\n",
    "    temp2['mb_pageview_dtl_REFERRER_MDDEL_NAME_text'] = df_test['mb_pageview_dtl_REFERRER_MDDEL_NAME'].astype(str) + '_' + df_test['mb_pageview_dtl_MODEL_NAME'].astype(str)\n",
    "    common_word = set(temp1[\"mb_pageview_dtl_REFERRER_MDDEL_NAME_text\"]).intersection(set(temp2[\"mb_pageview_dtl_REFERRER_MDDEL_NAME_text\"]))\n",
    "    \n",
    "    # 训练测试通用词\n",
    "    # print(common_word)\n",
    "    temp1 = temp1[temp1['mb_pageview_dtl_REFERRER_MDDEL_NAME_text'].isin(common_word)]\n",
    "    temp2 = temp2[temp2['mb_pageview_dtl_REFERRER_MDDEL_NAME_text'].isin(common_word)]\n",
    "    temp = pd.concat([temp1, temp2], axis=0)\n",
    "    # print(temp)\n",
    "\n",
    "    # 按月份获取词向量\n",
    "    df_temp, feature = get_w2v_feature(temp, ['CUST_NO', 'date_months_to_now'], 'mb_pageview_dtl_REFERRER_MDDEL_NAME_text', 32, abstract, ext='32', feature=[])\n",
    "    temp_month_1 = df_temp[df_temp['date_months_to_now'] == 0].reset_index(drop = True)\n",
    "    del temp_month_1['date_months_to_now']\n",
    "    temp_month_1.columns = ['CUST_NO'] + [f + '_First' for f in temp_month_1.columns if f not in ['CUST_NO', 'date_months_to_now']]\n",
    "\n",
    "    temp_month_2 = df_temp[df_temp['date_months_to_now'] == 1].reset_index(drop = True)\n",
    "    del temp_month_2['date_months_to_now']\n",
    "    temp_month_2.columns = ['CUST_NO'] + [f + '_Second' for f in temp_month_2.columns if f not in ['CUST_NO', 'date_months_to_now']]\n",
    "\n",
    "    temp_month_3 = df_temp[df_temp['date_months_to_now'] == 2].reset_index(drop = True)\n",
    "    \n",
    "    del temp_month_3['date_months_to_now']\n",
    "    temp_month_3.columns = ['CUST_NO'] + [f + '_Third' for f in temp_month_3.columns if f not in ['CUST_NO', 'date_months_to_now']]\n",
    "\n",
    "    return temp_month_1, temp_month_2, temp_month_3\n",
    "    \n",
    "mb_model_embed_month_1, mb_model_embed_month_2, mb_model_embed_month_3 = gen_embed(mb_pageview_dtl_train, mb_pageview_dtl_test_b, \"train_B\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "af68d73e",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-12-11T03:20:59.567984Z",
     "iopub.status.busy": "2024-12-11T03:20:59.567625Z",
     "iopub.status.idle": "2024-12-11T03:20:59.599249Z",
     "msg_id": "ff35f9fa-76b4-4586-8855-4b862d39df05",
     "shell.execute_reply": "2024-12-11T03:20:59.598599Z",
     "shell.execute_reply.started": "2024-12-11T03:20:59.567956Z"
    }
   },
   "outputs": [],
   "source": [
    "pkl_name = './feature/20241104_w2v_mbOpModel_B.pkl'\n",
    "if os.path.exists(pkl_name):\n",
    "    with open(pkl_name, 'rb') as f:\n",
    "        mb_model_embed_month_1, mb_model_embed_month_2, mb_model_embed_month_3 = pickle.load(f)\n",
    "else:\n",
    "    # 保存特征\n",
    "    with open(pkl_name, 'wb') as f:\n",
    "        pickle.dump([mb_model_embed_month_1, mb_model_embed_month_2, mb_model_embed_month_3], f)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "68607026",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-12-11T03:20:59.600550Z",
     "iopub.status.busy": "2024-12-11T03:20:59.600247Z",
     "iopub.status.idle": "2024-12-11T03:23:34.909532Z",
     "msg_id": "91b5213c-e0c5-46d8-9a94-d91deb07c713",
     "shell.execute_reply": "2024-12-11T03:23:34.908701Z",
     "shell.execute_reply.started": "2024-12-11T03:20:59.600525Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "begin train word2vec\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/tmp/ipykernel_1681/2646847748.py:14: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  data[col2] = data[col2].astype(str)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0    6578387\n",
      "2    5905716\n",
      "1    5672985\n",
      "Name: date_months_to_now, dtype: int64\n",
      "                            CUST_NO  date_months_to_now  \\\n",
      "0  0000436ed9d65dd70f8ccc904947595e                   0   \n",
      "1  0000436ed9d65dd70f8ccc904947595e                   1   \n",
      "2  0000436ed9d65dd70f8ccc904947595e                   2   \n",
      "3  00005a3b6d6ad8a3624d07622caf2c3f                   0   \n",
      "4  00005a3b6d6ad8a3624d07622caf2c3f                   1   \n",
      "\n",
      "                 mb_pageview_dtl_REFERRER_TITLE_text  \n",
      "0  [3f54b3d12dcecc882dccfd4e422360f2_c36a4b6527a8...  \n",
      "1  [6bb41067851861502c74edd3b31005ae_428a1709f794...  \n",
      "2  [99e968a9ee67ca8a825870088c1ea915_769dab657beb...  \n",
      "3  [8f8869df6bf7afd348c625dc682dbbce_99e968a9ee67...  \n",
      "4  [fb05b0d0036d613437aefd9b83e6e01f_769dab657beb...  \n",
      "150549\n",
      "39\n",
      "load model\n",
      "begin make feature\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 150549/150549 [01:22<00:00, 1831.14it/s]\n"
     ]
    }
   ],
   "source": [
    "# 6.2.2 操作页面Word2Vec特征\n",
    "import os\n",
    "import random\n",
    "from gensim.models import Word2Vec\n",
    "def set_seed(seed=2020):\n",
    "    random.seed(seed)\n",
    "    os.environ['PYTHONHASHSEED'] = str(seed)\n",
    "    np.random.seed(seed)\n",
    "set_seed(2020)\n",
    "\n",
    "def get_w2v_feature(data, col1, col2, emb_size, type_, ext, feature=[]):\n",
    "    print('begin train word2vec')\n",
    "    data = data[col1 +[col2]]\n",
    "    data[col2] = data[col2].astype(str)\n",
    "    print(data['date_months_to_now'].value_counts())\n",
    "    \n",
    "    tmp = data.groupby(col1)[col2].apply(lambda x:list(x)).reset_index()\n",
    "    sentences = tmp[col2].values.tolist()\n",
    "    print(tmp.head())\n",
    "    print(len(sentences))\n",
    "    print(len(sentences[0]))\n",
    "    del tmp[col2]\n",
    "    \n",
    "    if os.path.exists('./feature/{}_{}_feature{}_{}.model'.format('_'.join(col1),col2, ext, type_)):\n",
    "        print(\"load model\")\n",
    "        model = Word2Vec.load('./feature/{}_{}_feature{}_{}.model'.format('_'.join(col1),col2, ext, type_))\n",
    "        \n",
    "    else:\n",
    "        print(\"new model\")\n",
    "        model = Word2Vec(sentences, vector_size=emb_size, window=10, min_count=1, sg=1, seed=42, epochs=10, workers=1)\n",
    "        model.save('./feature/{}_{}_feature{}_{}.model'.format('_'.join(col1),col2, ext, type_))\n",
    "    emb_matrix = []\n",
    "    emb_dict = {}\n",
    "    \n",
    "    # CUST_NO不重复\n",
    "    print('begin make feature')\n",
    "    for seq in tqdm(sentences):\n",
    "        vec = []\n",
    "        for w in seq:\n",
    "            vocab = model.wv\n",
    "            if w in vocab:\n",
    "                vec.append(vocab[w])  # 句矩阵\n",
    "                emb_dict[w] = vocab[w]  # 词汇矩阵\n",
    "        if len(vec) > 0:\n",
    "            emb_matrix.append(np.mean(vec, axis=0))  # 求平均\n",
    "        else:\n",
    "            emb_matrix.append([0] * emb_size)  # model中没有则填0\n",
    "            \n",
    "    emb_matrix = np.array(emb_matrix)\n",
    "    for i in range(emb_size):\n",
    "        tmp['{}_{}_emb_{}_{}'.format('_'.join(col1), col2, i, ext)] = emb_matrix[:, i] # 每一列单独赋值 成特征\n",
    "        feature.append('{}_{}_emb_{}_{}'.format('_'.join(col1), col2, i,ext))\n",
    "    del model, emb_matrix, sentences\n",
    "    \n",
    "    return tmp, feature\n",
    "\n",
    "def gen_embed(df_train, df_test, abstract):\n",
    "\n",
    "    def get_days_to_now(df):\n",
    "        df[\"mb_pageview_dtl_OPERATION_DATE\"] = pd.to_datetime(df[\"mb_pageview_dtl_OPERATION_DATE\"], format=\"%Y%m%d\")\n",
    "        df_months_to_now = (df[\"mb_pageview_dtl_OPERATION_DATE\"].max() - df[\"mb_pageview_dtl_OPERATION_DATE\"]).dt.days\n",
    "        df[\"date_months_to_now\"] = df_months_to_now // 31  # 距今月数\n",
    "        df[\"date_weeks_to_now\"] = df_months_to_now // 7  # 距今周数\n",
    "        df[\"date_days_to_now\"] = df_months_to_now  # 距今天数\n",
    "        \n",
    "        return df\n",
    "    \n",
    "    # 日期转换\n",
    "    df_train = get_days_to_now(df_train)\n",
    "    df_test = get_days_to_now(df_test)\n",
    "\n",
    "    temp1 = df_train[['CUST_NO', 'mb_pageview_dtl_REFERRER_TITLE', 'mb_pageview_dtl_PAGE_TITLE', 'date_months_to_now']].copy()\n",
    "    temp2 = df_test[['CUST_NO', 'mb_pageview_dtl_REFERRER_TITLE', 'mb_pageview_dtl_PAGE_TITLE', 'date_months_to_now']].copy()\n",
    "\n",
    "    # 文本拼接\n",
    "    temp1['mb_pageview_dtl_REFERRER_TITLE_text'] = df_train['mb_pageview_dtl_PAGE_TITLE'].astype(str) + '_' + df_train['mb_pageview_dtl_REFERRER_TITLE'].astype(str)\n",
    "    temp2['mb_pageview_dtl_REFERRER_TITLE_text'] = df_test['mb_pageview_dtl_PAGE_TITLE'].astype(str) + '_' + df_test['mb_pageview_dtl_REFERRER_TITLE'].astype(str)\n",
    "    common_word = set(temp1[\"mb_pageview_dtl_REFERRER_TITLE_text\"]).intersection(set(temp2[\"mb_pageview_dtl_REFERRER_TITLE_text\"]))\n",
    "    \n",
    "    # 训练测试通用词\n",
    "    # print(common_word)\n",
    "    temp1 = temp1[temp1['mb_pageview_dtl_REFERRER_TITLE_text'].isin(common_word)]\n",
    "    temp2 = temp2[temp2['mb_pageview_dtl_REFERRER_TITLE_text'].isin(common_word)]\n",
    "    temp = pd.concat([temp1, temp2], axis=0)\n",
    "    # print(temp)\n",
    "\n",
    "    # 按月份获取词向量\n",
    "    df_temp, feature = get_w2v_feature(temp, ['CUST_NO', 'date_months_to_now'], 'mb_pageview_dtl_REFERRER_TITLE_text', 32, abstract, ext='32', feature=[])\n",
    "    temp_month_1 = df_temp[df_temp['date_months_to_now'] == 0].reset_index(drop = True)\n",
    "    del temp_month_1['date_months_to_now']\n",
    "    temp_month_1.columns = ['CUST_NO'] + [f + '_First' for f in temp_month_1.columns if f not in ['CUST_NO', 'date_months_to_now']]\n",
    "\n",
    "    temp_month_2 = df_temp[df_temp['date_months_to_now'] == 1].reset_index(drop = True)\n",
    "    del temp_month_2['date_months_to_now']\n",
    "    temp_month_2.columns = ['CUST_NO'] + [f + '_Second' for f in temp_month_2.columns if f not in ['CUST_NO', 'date_months_to_now']]\n",
    "\n",
    "    temp_month_3 = df_temp[df_temp['date_months_to_now'] == 2].reset_index(drop = True)\n",
    "    del temp_month_3['date_months_to_now']\n",
    "    temp_month_3.columns = ['CUST_NO'] + [f + '_Third' for f in temp_month_3.columns if f not in ['CUST_NO', 'date_months_to_now']]\n",
    "\n",
    "    return temp_month_1, temp_month_2, temp_month_3\n",
    "    \n",
    "mb_embed_month_1, mb_embed_month_2, mb_embed_month_3 = gen_embed(mb_pageview_dtl_train, mb_pageview_dtl_test_b, \"train_B\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "e23176c6",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-12-11T03:23:34.911010Z",
     "iopub.status.busy": "2024-12-11T03:23:34.910633Z",
     "iopub.status.idle": "2024-12-11T03:23:34.942483Z",
     "msg_id": "35f89066-f778-4f5b-9154-c4d0f9ed9cc9",
     "shell.execute_reply": "2024-12-11T03:23:34.941823Z",
     "shell.execute_reply.started": "2024-12-11T03:23:34.910976Z"
    }
   },
   "outputs": [],
   "source": [
    "pkl_name = './feature/20241104_w2v_B.pkl'\n",
    "if os.path.exists(pkl_name):\n",
    "    with open(pkl_name, 'rb') as f:\n",
    "        mb_embed_month_1, mb_embed_month_2, mb_embed_month_3 = pickle.load(f)\n",
    "else:\n",
    "    # 保存特征\n",
    "    with open(pkl_name, 'wb') as f:\n",
    "        pickle.dump([mb_embed_month_1, mb_embed_month_2, mb_embed_month_3], f)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "eef5ad24",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-12-11T03:23:34.943933Z",
     "iopub.status.busy": "2024-12-11T03:23:34.943666Z",
     "iopub.status.idle": "2024-12-11T03:30:12.203084Z",
     "msg_id": "24c78258-0ade-4131-942b-9119419be1af",
     "shell.execute_reply": "2024-12-11T03:30:12.202284Z",
     "shell.execute_reply.started": "2024-12-11T03:23:34.943908Z"
    }
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "  0%|          | 0/1 [00:00<?, ?it/s]\n",
      "  0%|          | 0/8 [00:00<?, ?it/s]\u001b[A\n",
      " 12%|█▎        | 1/8 [00:00<00:04,  1.52it/s]\u001b[A\n",
      " 25%|██▌       | 2/8 [00:01<00:03,  1.53it/s]\u001b[A\n",
      " 38%|███▊      | 3/8 [00:01<00:03,  1.54it/s]\u001b[A\n",
      " 50%|█████     | 4/8 [00:02<00:02,  1.49it/s]\u001b[A\n",
      " 62%|██████▎   | 5/8 [00:03<00:01,  1.51it/s]\u001b[A\n",
      " 75%|███████▌  | 6/8 [00:03<00:01,  1.52it/s]\u001b[A\n",
      " 88%|████████▊ | 7/8 [00:27<00:08,  8.25s/it]\u001b[A\n",
      "100%|██████████| 8/8 [00:49<00:00,  6.23s/it]\u001b[A\n",
      "\n",
      "  0%|          | 0/1 [00:00<?, ?it/s]\u001b[A\n",
      "100%|██████████| 1/1 [00:00<00:00,  1.66it/s]\u001b[A\n",
      "\n",
      "  0%|          | 0/1 [00:00<?, ?it/s]\u001b[A\n",
      "100%|██████████| 1/1 [00:03<00:00,  3.08s/it]\u001b[A\n",
      "\n",
      "  0%|          | 0/1 [00:00<?, ?it/s]\u001b[A\n",
      "100%|██████████| 1/1 [00:03<00:00,  3.09s/it]\u001b[A\n",
      "100%|██████████| 1/1 [00:56<00:00, 56.63s/it]\n",
      "100%|██████████| 3/3 [00:00<00:00, 148.03it/s]\n",
      "  0%|          | 0/1 [00:00<?, ?it/s]\n",
      "  0%|          | 0/8 [00:00<?, ?it/s]\u001b[A\n",
      " 12%|█▎        | 1/8 [00:01<00:08,  1.20s/it]\u001b[A\n",
      " 25%|██▌       | 2/8 [00:02<00:06,  1.15s/it]\u001b[A\n",
      " 38%|███▊      | 3/8 [00:03<00:05,  1.13s/it]\u001b[A\n",
      " 50%|█████     | 4/8 [00:04<00:04,  1.16s/it]\u001b[A\n",
      " 62%|██████▎   | 5/8 [00:05<00:03,  1.16s/it]\u001b[A\n",
      " 75%|███████▌  | 6/8 [00:06<00:02,  1.15s/it]\u001b[A\n",
      " 88%|████████▊ | 7/8 [00:40<00:11, 11.62s/it]\u001b[A\n",
      "100%|██████████| 8/8 [01:10<00:00,  8.78s/it]\u001b[A\n",
      "100%|██████████| 1/1 [01:10<00:00, 70.24s/it]\n",
      "100%|██████████| 1/1 [00:02<00:00,  2.34s/it]\n",
      "100%|██████████| 39/39 [00:13<00:00,  2.79it/s]\n",
      "  0%|          | 0/1 [00:00<?, ?it/s]\n",
      "  0%|          | 0/8 [00:00<?, ?it/s]\u001b[A\n",
      " 12%|█▎        | 1/8 [00:00<00:04,  1.65it/s]\u001b[A\n",
      " 25%|██▌       | 2/8 [00:01<00:03,  1.69it/s]\u001b[A\n",
      " 38%|███▊      | 3/8 [00:01<00:02,  1.71it/s]\u001b[A\n",
      " 50%|█████     | 4/8 [00:02<00:02,  1.65it/s]\u001b[A\n",
      " 62%|██████▎   | 5/8 [00:02<00:01,  1.67it/s]\u001b[A\n",
      " 75%|███████▌  | 6/8 [00:03<00:01,  1.68it/s]\u001b[A\n",
      " 88%|████████▊ | 7/8 [00:28<00:08,  8.40s/it]\u001b[A\n",
      "100%|██████████| 8/8 [00:50<00:00,  6.33s/it]\u001b[A\n",
      "\n",
      "  0%|          | 0/1 [00:00<?, ?it/s]\u001b[A\n",
      "100%|██████████| 1/1 [00:00<00:00,  1.68it/s]\u001b[A\n",
      "\n",
      "  0%|          | 0/1 [00:00<?, ?it/s]\u001b[A\n",
      "100%|██████████| 1/1 [00:03<00:00,  3.94s/it]\u001b[A\n",
      "\n",
      "  0%|          | 0/1 [00:00<?, ?it/s]\u001b[A\n",
      "100%|██████████| 1/1 [00:03<00:00,  3.95s/it]\u001b[A\n",
      "100%|██████████| 1/1 [00:59<00:00, 59.15s/it]\n",
      "100%|██████████| 3/3 [00:00<00:00, 150.93it/s]\n",
      "  0%|          | 0/1 [00:00<?, ?it/s]\n",
      "  0%|          | 0/8 [00:00<?, ?it/s]\u001b[A\n",
      " 12%|█▎        | 1/8 [00:01<00:07,  1.01s/it]\u001b[A\n",
      " 25%|██▌       | 2/8 [00:02<00:06,  1.02s/it]\u001b[A\n",
      " 38%|███▊      | 3/8 [00:03<00:05,  1.03s/it]\u001b[A\n",
      " 50%|█████     | 4/8 [00:04<00:04,  1.06s/it]\u001b[A\n",
      " 62%|██████▎   | 5/8 [00:05<00:03,  1.07s/it]\u001b[A\n",
      " 75%|███████▌  | 6/8 [00:06<00:02,  1.07s/it]\u001b[A\n",
      " 88%|████████▊ | 7/8 [00:39<00:11, 11.42s/it]\u001b[A\n",
      "100%|██████████| 8/8 [01:08<00:00,  8.59s/it]\u001b[A\n",
      "100%|██████████| 1/1 [01:08<00:00, 68.70s/it]\n",
      "100%|██████████| 1/1 [00:02<00:00,  2.99s/it]\n",
      "100%|██████████| 39/39 [00:18<00:00,  2.13it/s]\n",
      "100%|██████████| 3/3 [00:06<00:00,  2.23s/it]\n",
      "100%|██████████| 3/3 [00:08<00:00,  2.83s/it]\n",
      "  0%|          | 0/1 [00:00<?, ?it/s]\n",
      "  0%|          | 0/8 [00:00<?, ?it/s]\u001b[A\n",
      " 25%|██▌       | 2/8 [00:00<00:00, 19.39it/s]\u001b[A\n",
      " 62%|██████▎   | 5/8 [00:00<00:00, 20.71it/s]\u001b[A\n",
      "100%|██████████| 8/8 [00:04<00:00,  1.63it/s]\u001b[A\n",
      "\n",
      "100%|██████████| 1/1 [00:00<00:00, 17.50it/s]\n",
      "\n",
      "  0%|          | 0/1 [00:00<?, ?it/s]\u001b[A\n",
      "100%|██████████| 1/1 [00:00<00:00,  4.55it/s]\u001b[A\n",
      "\n",
      "  0%|          | 0/1 [00:00<?, ?it/s]\u001b[A\n",
      "100%|██████████| 1/1 [00:00<00:00,  4.92it/s]\u001b[A\n",
      "100%|██████████| 1/1 [00:05<00:00,  5.40s/it]\n",
      "100%|██████████| 3/3 [00:00<00:00, 293.13it/s]\n",
      "  0%|          | 0/1 [00:00<?, ?it/s]\n",
      "  0%|          | 0/8 [00:00<?, ?it/s]\u001b[A\n",
      " 25%|██▌       | 2/8 [00:00<00:00, 11.39it/s]\u001b[A\n",
      " 50%|█████     | 4/8 [00:00<00:00, 11.55it/s]\u001b[A\n",
      " 75%|███████▌  | 6/8 [00:00<00:00, 11.41it/s]\u001b[A\n",
      "100%|██████████| 8/8 [00:06<00:00,  1.16it/s]\u001b[A\n",
      "100%|██████████| 1/1 [00:06<00:00,  6.93s/it]\n",
      "100%|██████████| 1/1 [00:00<00:00,  5.78it/s]\n",
      "100%|██████████| 33/33 [00:00<00:00, 42.88it/s]\n",
      "  0%|          | 0/1 [00:00<?, ?it/s]\n",
      "  0%|          | 0/8 [00:00<?, ?it/s]\u001b[A\n",
      " 38%|███▊      | 3/8 [00:00<00:00, 20.92it/s]\u001b[A\n",
      "100%|██████████| 8/8 [00:05<00:00,  1.58it/s]\u001b[A\n",
      "\n",
      "100%|██████████| 1/1 [00:00<00:00, 17.92it/s]\n",
      "\n",
      "  0%|          | 0/1 [00:00<?, ?it/s]\u001b[A\n",
      "100%|██████████| 1/1 [00:00<00:00,  3.89it/s]\u001b[A\n",
      "\n",
      "  0%|          | 0/1 [00:00<?, ?it/s]\u001b[A\n",
      "100%|██████████| 1/1 [00:00<00:00,  4.07it/s]\u001b[A\n",
      "100%|██████████| 1/1 [00:05<00:00,  5.64s/it]\n",
      "100%|██████████| 3/3 [00:00<00:00, 296.49it/s]\n",
      "  0%|          | 0/1 [00:00<?, ?it/s]\n",
      "  0%|          | 0/8 [00:00<?, ?it/s]\u001b[A\n",
      " 25%|██▌       | 2/8 [00:00<00:00, 11.76it/s]\u001b[A\n",
      " 50%|█████     | 4/8 [00:00<00:00, 11.89it/s]\u001b[A\n",
      " 75%|███████▌  | 6/8 [00:00<00:00, 11.91it/s]\u001b[A\n",
      "100%|██████████| 8/8 [00:06<00:00,  1.16it/s]\u001b[A\n",
      "100%|██████████| 1/1 [00:06<00:00,  6.89s/it]\n",
      "100%|██████████| 1/1 [00:00<00:00,  5.04it/s]\n",
      "100%|██████████| 37/37 [00:00<00:00, 41.47it/s]\n",
      "100%|██████████| 3/3 [00:00<00:00,  6.61it/s]\n",
      "100%|██████████| 3/3 [00:00<00:00,  5.68it/s]\n"
     ]
    }
   ],
   "source": [
    "from copy import deepcopy\n",
    "\n",
    "# 7 活期交易表（GTGSH_TR_APS_DTL）\n",
    "def get_division_features(df1, df2, col1, col2, eps=1e-6):\n",
    "    tmp = pd.merge(df1, df2, how=\"left\", on=\"CUST_NO\")\n",
    "    new_feature_name = '_'.join([col1, \"div\", col2])\n",
    "    tmp[new_feature_name] = tmp[col1] / (tmp[col2] + eps)\n",
    "    feature_name = [\"CUST_NO\", new_feature_name]\n",
    "    return tmp[feature_name]\n",
    "    \n",
    "def get_aps_days_to_now(df):\n",
    "    df[\"date\"] = pd.to_datetime(df[\"APSDTRDAT\"], format=\"%Y%m%d\")\n",
    "    df_months_to_now = (df[\"date\"].max() - df[\"date\"]).dt.days\n",
    "    df[\"date_months_to_now\"] = df_months_to_now // 31  # 距今月数\n",
    "    df[\"date_weeks_to_now\"] = df_months_to_now // 7  # 距今周数\n",
    "    df[\"date_days_to_now\"] = df_months_to_now  # 距今天数\n",
    "    \n",
    "    return df\n",
    "\n",
    "def get_aps_recent_days_to_now(df_tr, month):\n",
    "    # 最近一笔交易距今天数\n",
    "    tmp_df = df_tr.groupby(['CUST_NO'])[\"date_days_to_now\"].min().to_frame(\"recent_days_to_now_{}\".format(str(month))).reset_index()  # 取最近一天\n",
    "    \n",
    "    return tmp_df\n",
    "\n",
    "def get_aps_max_amt_days_to_now(df_tr, month):\n",
    "    # 最大一笔金额距今天数（剔除零值交易）\n",
    "    if df_tr[\"APSDTRAMT\"].max() > 0:\n",
    "        tmp_df = df_tr[df_tr[\"APSDTRAMT\"] > 0].groupby(['CUST_NO']).agg({\"APSDTRAMT\": \"max\"}).reset_index()\n",
    "    else:\n",
    "        tmp_df = df_tr[df_tr[\"APSDTRAMT\"] < 0].groupby(['CUST_NO']).agg({\"APSDTRAMT\": \"min\"}).reset_index()\n",
    "\n",
    "    tmp_df = tmp_df.merge(df_tr[['CUST_NO', 'date_days_to_now', 'APSDTRAMT']], on=[\"CUST_NO\", 'APSDTRAMT'], how=\"inner\")\n",
    "    tmp_df_day = tmp_df.groupby(['CUST_NO'])[\"date_days_to_now\"].min().to_frame(\"max_amt_days_to_now_{}\".format(str(month))).reset_index()  # 取最近一天\n",
    "    tmp_df_amt = tmp_df.groupby(['CUST_NO']).agg({\"APSDTRAMT\": \"max\"}).reset_index()\n",
    "    tmp_df_amt.columns = ['CUST_NO', 'max_absamt_{}'.format(str(month))]\n",
    "\n",
    "    return tmp_df_day, tmp_df_amt\n",
    "\n",
    "def gen_aps_day_features_by_month(df_tr, tr_feature, dual_dir=True, postfix=''): \n",
    "    '''\n",
    "        1 最大一笔流入/流出金额距今天数特征，剔除零值交易\n",
    "        2 最大一笔流入流出金额天数/金额轧差（没有按天聚合）\n",
    "    '''\n",
    "    ## 每月单日最大金额交易距今天数/每月最近一笔交易距每月最大单日金额交易天数    \n",
    "    if dual_dir:\n",
    "        # 单日最大流入金额距今天数\n",
    "        df_tr_in = df_tr[df_tr[\"APSDTRAMT\"]>0]\n",
    "        tmp_tr_feature = tr_feature[[\"CUST_NO\"]].drop_duplicates([\"CUST_NO\"]).copy().reset_index(drop=True)\n",
    "        for month in tqdm([0, 1, 2]):\n",
    "            df_tr_month = df_tr_in[df_tr_in[\"date_months_to_now\"]==month]\n",
    "            df_max_amt_days_to_now, df_max_amt = get_aps_max_amt_days_to_now(df_tr_month, month)\n",
    "            df_recent_days_to_now = get_aps_recent_days_to_now(df_tr_month, month)\n",
    "            tmp_tr_feature = tmp_tr_feature.merge(df_max_amt_days_to_now, how=\"left\", on=\"CUST_NO\")\n",
    "            tmp_tr_feature = tmp_tr_feature.merge(df_recent_days_to_now, how=\"left\", on=\"CUST_NO\")\n",
    "            tmp_tr_feature = tmp_tr_feature.merge(df_max_amt, how=\"left\", on=\"CUST_NO\")\n",
    "            tmp_tr_feature[\"maxamt_days_to_recent_{}\".format(str(month))] = tmp_tr_feature[\"recent_days_to_now_{}\".format(str(month))] - tmp_tr_feature[\"max_amt_days_to_now_{}\".format(str(month))]\n",
    "        tmp_tr_feature.columns = [\"CUST_NO\"] + [\"{}_{}_{}\".format(col, \"in\", postfix) for col in tmp_tr_feature.columns if col != \"CUST_NO\"]\n",
    "        tr_feature = tr_feature.merge(tmp_tr_feature, how=\"left\", on=\"CUST_NO\")\n",
    "        \n",
    "        # 单日最大流出金额距今天数\n",
    "        df_tr_out = df_tr[df_tr[\"APSDTRAMT\"]<0]\n",
    "        tmp_tr_feature = tr_feature[[\"CUST_NO\"]].drop_duplicates([\"CUST_NO\"]).copy().reset_index(drop=True)\n",
    "        for month in tqdm([0, 1, 2]):\n",
    "            df_tr_month = df_tr_out[df_tr_out[\"date_months_to_now\"]==month]\n",
    "            df_max_amt_days_to_now, df_max_amt = get_aps_max_amt_days_to_now(df_tr_month, month)\n",
    "            df_recent_days_to_now = get_aps_recent_days_to_now(df_tr_month, month)\n",
    "            tmp_tr_feature = tmp_tr_feature.merge(df_max_amt_days_to_now, how=\"left\", on=\"CUST_NO\")\n",
    "            tmp_tr_feature = tmp_tr_feature.merge(df_recent_days_to_now, how=\"left\", on=\"CUST_NO\")\n",
    "            tmp_tr_feature = tmp_tr_feature.merge(df_max_amt, how=\"left\", on=\"CUST_NO\")\n",
    "            tmp_tr_feature[\"maxamt_days_to_recent_{}\".format(str(month))] = tmp_tr_feature[\"recent_days_to_now_{}\".format(str(month))] - tmp_tr_feature[\"max_amt_days_to_now_{}\".format(str(month))]\n",
    "        tmp_tr_feature.columns = [\"CUST_NO\"] + [\"{}_{}_{}\".format(col, \"out\", postfix) for col in tmp_tr_feature.columns if col != \"CUST_NO\"]\n",
    "        tr_feature = tr_feature.merge(tmp_tr_feature, how=\"left\", on=\"CUST_NO\")\n",
    "    \n",
    "        # 流入流出金额天数/金额轧差，特征重要性排名靠后\n",
    "        tr_feature[\"in_out_max_absamt_diff_0_{}\".format(postfix)] = tr_feature[\"max_absamt_0_in_{}\".format(postfix)].abs() - tr_feature[\"max_absamt_0_out_{}\".format(postfix)].abs()\n",
    "        tr_feature[\"in_out_max_absamt_diff_1_{}\".format(postfix)] = tr_feature[\"max_absamt_1_in_{}\".format(postfix)].abs() - tr_feature[\"max_absamt_1_out_{}\".format(postfix)].abs()\n",
    "        tr_feature[\"in_out_max_absamt_diff_2_{}\".format(postfix)] = tr_feature[\"max_absamt_1_in_{}\".format(postfix)].abs() - tr_feature[\"max_absamt_2_out_{}\".format(postfix)].abs()\n",
    "\n",
    "        tr_feature[\"in_out_maxamt_days_diff_0_{}\".format(postfix)] = tr_feature[\"max_amt_days_to_now_0_in_{}\".format(postfix)] - tr_feature[\"max_amt_days_to_now_0_out_{}\".format(postfix)]\n",
    "        tr_feature[\"in_out_maxamt_days_diff_1_{}\".format(postfix)] = tr_feature[\"max_amt_days_to_now_1_in_{}\".format(postfix)] - tr_feature[\"max_amt_days_to_now_1_out_{}\".format(postfix)]\n",
    "        tr_feature[\"in_out_maxamt_days_diff_2_{}\".format(postfix)] = tr_feature[\"max_amt_days_to_now_2_in_{}\".format(postfix)] - tr_feature[\"max_amt_days_to_now_2_out_{}\".format(postfix)]\n",
    "    else:\n",
    "        tmp_tr_feature = tr_feature[[\"CUST_NO\"]].drop_duplicates([\"CUST_NO\"]).copy().reset_index(drop=True)\n",
    "        for month in tqdm([0, 1, 2]):\n",
    "            df_tr_month = df_tr[df_tr[\"date_months_to_now\"]==month]\n",
    "            df_max_amt_days_to_now, df_max_amt = get_aps_max_amt_days_to_now(df_tr_month, month)\n",
    "            df_recent_days_to_now = get_aps_recent_days_to_now(df_tr_month, month)\n",
    "            tmp_tr_feature = tmp_tr_feature.merge(df_max_amt_days_to_now, how=\"left\", on=\"CUST_NO\")\n",
    "            tmp_tr_feature = tmp_tr_feature.merge(df_recent_days_to_now, how=\"left\", on=\"CUST_NO\")\n",
    "            tmp_tr_feature = tmp_tr_feature.merge(df_max_amt, how=\"left\", on=\"CUST_NO\")\n",
    "            tmp_tr_feature[\"maxamt_days_to_recent_{}_{}\".format(str(month), postfix)] = df_recent_days_to_now[\"recent_days_to_now_{}\".format(str(month))] - df_max_amt_days_to_now[\"max_amt_days_to_now_{}\".format(str(month))]\n",
    "        tr_feature = tr_feature.merge(tmp_tr_feature, how=\"left\", on=\"CUST_NO\") \n",
    "        \n",
    "    return tr_feature\n",
    "\n",
    "def gen_aps_features_by_day(df_tr, tr_feature, postfix):\n",
    "    '''\n",
    "        1 流入流出分组处理\n",
    "        2 渠道偏好特征，分母使用各自渠道的转入/转出总笔数（正常交易类特征）\n",
    "        3 最近一笔交易距今天数特征\n",
    "        4 最近一笔交易距每月最大单日金额交易天数特征\n",
    "        5 最大一笔流入流出距今天数\n",
    "    '''\n",
    "    \"\"\" 1 数据预处理 \"\"\"\n",
    "    # 1.1 按天/交易代码聚合金额\n",
    "    df_tr_by_day_cod_amt = df_tr.groupby([\"CUST_NO\", \"date_days_to_now\", \"date_weeks_to_now\", \"date_months_to_now\", \"APSDTRCOD\", \"APSDTRCHL\"]).agg({\"APSDTRAMT\": \"sum\"}).reset_index()\n",
    "    df_tr_by_day_cod_amt[\"APSDTRAMT\"].fillna(0, inplace=True)\n",
    "    df_tr_by_day = df_tr_by_day_cod_amt.groupby([\"CUST_NO\", \"date_days_to_now\", \"date_weeks_to_now\", \"date_months_to_now\"]).agg({\"APSDTRAMT\": \"sum\"}).reset_index() \n",
    "\n",
    "    # 1.2 按天聚合交易代码数\n",
    "    df_tr_by_day_cod_ns = df_tr.groupby([\"CUST_NO\", \"date_days_to_now\", \"date_weeks_to_now\", \"date_months_to_now\", \"APSDTRCOD\"])[\"APSDTRCOD\"].agg(['nunique', 'count'])\n",
    "    df_tr_by_day_cod_ns.columns = ['nunique', 'count']\n",
    "    df_tr_by_day_cod_ns = df_tr_by_day_cod_ns.reset_index()\n",
    "    df_tr_by_day_cod = df_tr_by_day_cod_ns.groupby([\"CUST_NO\", \"date_days_to_now\", \"date_weeks_to_now\", \"date_months_to_now\"])[['nunique', 'count']].agg(\"sum\").reset_index() \n",
    "\n",
    "    # 1.3 按天聚合交易渠道数\n",
    "    df_tr_by_day_chl_ns = df_tr.groupby([\"CUST_NO\", \"date_days_to_now\", \"date_weeks_to_now\", \"date_months_to_now\", \"APSDTRCHL\"])[\"APSDTRCHL\"].agg(['nunique', 'count'])\n",
    "    df_tr_by_day_chl_ns.columns = ['nunique', 'count']\n",
    "    df_tr_by_day_chl_ns = df_tr_by_day_chl_ns.reset_index()\n",
    "    df_tr_by_day_chl = df_tr_by_day_chl_ns.groupby([\"CUST_NO\", \"date_days_to_now\", \"date_weeks_to_now\", \"date_months_to_now\"])[['nunique', 'count']].agg(\"sum\").reset_index() \n",
    "\n",
    "    \"\"\"\" 2 滑窗 \"\"\"\n",
    "    # 2.1 按日/星期/月滑窗，统计交易笔数/金额统计量（笔均/最大等）\n",
    "    tmp_tr_feature = tr_feature[[\"CUST_NO\"]].drop_duplicates([\"CUST_NO\"]).copy().reset_index(drop=True)\n",
    "    for fea1 in tqdm([\"date_months_to_now\"]):\n",
    "    # for fea1 in tqdm([\"date_months_to_now\", \"date_weeks_to_now\"]):  # TODO: 特征规模太大\n",
    "        # 日交易金额趋势\n",
    "        tmp_tr_feature, cols_amt = get_all_id_category_features(\n",
    "                        tmp_tr_feature, df_tr_by_day, fea1=fea1, fea2='APSDTRAMT', \n",
    "                        stats=['mean', 'max', 'min', 'median', 'std', 'sum', \"skew\", \"kurt\"]\n",
    "                    )\n",
    "\n",
    "        # 日交易笔数\n",
    "        tmp_tr_feature, _ = get_all_id_category_features(\n",
    "                        tmp_tr_feature, df_tr_by_day_cod, fea1=fea1, fea2='count',  # NOTE: count为列名\n",
    "                        # stats=['mean', 'max', 'min', 'median', 'std', 'sum', \"skew\", \"kurt\"]\n",
    "                        stats=[\"sum\"]\n",
    "                    )\n",
    "\n",
    "        # 日交易代码数\n",
    "        tmp_tr_feature, _ = get_all_id_category_features(\n",
    "                        tmp_tr_feature, df_tr, fea1=fea1, fea2='APSDTRCOD',  # TODO: 对列名nunique统计趋势\n",
    "                        # stats=['mean', 'max', 'min', 'median', 'std', 'sum', \"skew\", \"kurt\"]\n",
    "                        stats=['nunique']\n",
    "                    )\n",
    "        \n",
    "        # 日交易渠道数\n",
    "        tmp_tr_feature, _ = get_all_id_category_features(\n",
    "                        tmp_tr_feature, df_tr, fea1=fea1, fea2='APSDTRCHL',\n",
    "                        # stats=['mean', 'max', 'min', 'median', 'std', 'sum', \"skew\", \"kurt\"]\n",
    "                        stats=[\"nunique\"]\n",
    "                    )\n",
    "\n",
    "    tr_feature = tr_feature.merge(tmp_tr_feature, how=\"left\", on=\"CUST_NO\")\n",
    "\n",
    "    # 2.2 每月月均交易金额是否大于当月四分/二分位数（用户群体内对比）\n",
    "    # 月均交易金额\n",
    "    cols_amt_month_sum = [col for col in cols_amt if (\"date_months_to_now\" in col and \"sum\" in col)]\n",
    "    for col in tqdm(cols_amt_month_sum):\n",
    "        tr_feature[\"{}_1_4_month\".format(str(col))] = (tr_feature[\"{}\".format(col)].abs() > tr_feature[\"{}\".format(col)].quantile(0.25)).astype(float).abs()  # 流入大于1/4位数\n",
    "        tr_feature[\"{}_1_2_month\".format(str(col))] = (tr_feature[\"{}\".format(col)].abs() > tr_feature[\"{}\".format(col)].quantile(0.5)).astype(float).abs()  # 流入大于1/2位数\n",
    "    \n",
    "    \"\"\" 3 交易代码分组统计 \"\"\"\n",
    "    # 3.1 流入/流出交易金额（笔均/最大等）\n",
    "    tmp_tr_feature = tr_feature[[\"CUST_NO\"]].drop_duplicates([\"CUST_NO\"]).copy().reset_index(drop=True)\n",
    "    # for fea1 in tqdm(['APSDTRCOD', 'APSDTRCHL']):\n",
    "    for fea1 in tqdm(['APSDTRCHL']):\n",
    "        tmp_tr_feature, cols = get_all_id_category_features(\n",
    "                        tmp_tr_feature, df_tr_by_day_cod_amt, fea1=fea1, fea2='APSDTRAMT', \n",
    "                        stats=['mean', 'max', 'min', 'median', 'std', 'sum', \"skew\", \"kurt\"]\n",
    "                    )\n",
    "    tr_feature = tr_feature.merge(tmp_tr_feature, how=\"left\", on=\"CUST_NO\")\n",
    "\n",
    "    # 3.2 交易笔数\n",
    "    cols_dict = dict()\n",
    "    tmp_tr_feature = tr_feature[[\"CUST_NO\"]].drop_duplicates([\"CUST_NO\"]).copy().reset_index(drop=True)\n",
    "    for fea1 in tqdm(['APSDTRCHL']): \n",
    "        tmp_tr_feature, cols = get_id_category_features(\n",
    "                                    tmp_tr_feature, df_tr, fea1=fea1, fea2='CUST_NO', stat='count'\n",
    "                                )\n",
    "        cols_dict[fea1] = cols\n",
    "    tr_feature = tr_feature.merge(tmp_tr_feature, how=\"left\", on=\"CUST_NO\")\n",
    "\n",
    "    \"\"\" 4 渠道偏好: 每个渠道的交易笔数 / 总笔数 \"\"\"\n",
    "    tr_freq_chl = tr_feature[[\"CUST_NO\"]+cols_dict[\"APSDTRCHL\"]]\n",
    "    tr_freq = df_tr.groupby(['CUST_NO']).agg({'CUST_NO': 'count'})\n",
    "    tr_freq.columns = ['tr_freq']\n",
    "    tr_freq = tr_freq.reset_index(drop=False)\n",
    "    for chl_col in tqdm(cols_dict[\"APSDTRCHL\"]):\n",
    "        # 获取客户渠道偏好度\n",
    "        tr_prefer_chl = get_division_features(tr_freq_chl, tr_freq, chl_col, 'tr_freq')\n",
    "        # 去掉偏渠道偏好度为0的渠道\n",
    "        if tr_prefer_chl.iloc[1].values.any():\n",
    "            tr_feature = tr_feature.merge(tr_prefer_chl, on=\"CUST_NO\", how=\"left\")\n",
    "    \n",
    "    \"\"\" 5 特征重命名 \"\"\"\n",
    "    tr_feature.columns = [\"CUST_NO\"] + [\"{}_{}\".format(col, postfix) for col in tr_feature.columns if col != \"CUST_NO\"]\n",
    "\n",
    "    return tr_feature\n",
    "\n",
    "# 加工训练集\n",
    "aps_train = get_aps_days_to_now(tr_aps_dtl_train)\n",
    "aps_feature_train = aps_train[[\"CUST_NO\"]].drop_duplicates(['CUST_NO']).copy().reset_index(drop=True)\n",
    "aps_in_train = deepcopy(aps_train[aps_train[\"APSDTRAMT\"]>=0]) \n",
    "aps_out_train = deepcopy(aps_train[aps_train[\"APSDTRAMT\"]<0])\n",
    "aps_feature_in_train = gen_aps_features_by_day(aps_in_train, aps_feature_train, postfix='in')\n",
    "aps_feature_out_train = gen_aps_features_by_day(aps_out_train, aps_feature_train, postfix='out')\n",
    "aps_feature_train = gen_aps_day_features_by_month(aps_train, aps_feature_train, dual_dir=True)\n",
    "aps_feature_train = aps_feature_train.merge(aps_feature_in_train, how=\"left\", on=\"CUST_NO\")\n",
    "aps_feature_train = aps_feature_train.merge(aps_feature_out_train, how=\"left\", on=\"CUST_NO\")\n",
    "\n",
    "# 加工测试集\n",
    "aps_test = get_aps_days_to_now(tr_aps_dtl_test_b) \n",
    "aps_feature_test = aps_test[[\"CUST_NO\"]].drop_duplicates(['CUST_NO']).copy().reset_index(drop=True)\n",
    "aps_in_test = deepcopy(aps_test[aps_test[\"APSDTRAMT\"]>=0]) \n",
    "aps_out_test = deepcopy(aps_test[aps_test[\"APSDTRAMT\"]<0])\n",
    "aps_feature_in_test = gen_aps_features_by_day(aps_in_test, aps_feature_test, postfix='in')\n",
    "aps_feature_out_test = gen_aps_features_by_day(aps_out_test, aps_feature_test, postfix='out')\n",
    "aps_feature_test = gen_aps_day_features_by_month(aps_test, aps_feature_test, dual_dir=True)\n",
    "aps_feature_test = aps_feature_test.merge(aps_feature_in_test, how=\"left\", on=\"CUST_NO\")\n",
    "aps_feature_test = aps_feature_test.merge(aps_feature_out_test, how=\"left\", on=\"CUST_NO\")\n",
    "\n",
    "# 训练测试合并\n",
    "aps_feature_train.columns = [\"CUST_NO\"] + [\"aps_{}\".format(col) for col in aps_feature_train.columns if col != \"CUST_NO\"]\n",
    "aps_feature_test.columns = [\"CUST_NO\"] + [\"aps_{}\".format(col) for col in aps_feature_test.columns if col != \"CUST_NO\"]\n",
    "aps_feature_train[\"is_test\"] = False\n",
    "aps_feature_test[\"is_test\"] = True\n",
    "aps_feature = pd.concat([aps_feature_train, aps_feature_test], axis=0, join=\"outer\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "7b5f1eb1",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-12-11T03:30:12.204894Z",
     "iopub.status.busy": "2024-12-11T03:30:12.204364Z",
     "iopub.status.idle": "2024-12-11T03:33:32.917664Z",
     "msg_id": "431bcbfb-44c7-4fca-b1d3-4f40c43365b8",
     "shell.execute_reply": "2024-12-11T03:33:32.916910Z",
     "shell.execute_reply.started": "2024-12-11T03:30:12.204866Z"
    },
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "  0%|          | 0/1 [00:00<?, ?it/s]\n",
      "  0%|          | 0/8 [00:00<?, ?it/s]\u001b[A\n",
      " 12%|█▎        | 1/8 [00:00<00:02,  2.68it/s]\u001b[A\n",
      " 25%|██▌       | 2/8 [00:00<00:02,  2.76it/s]\u001b[A\n",
      " 38%|███▊      | 3/8 [00:01<00:01,  2.72it/s]\u001b[A\n",
      " 50%|█████     | 4/8 [00:01<00:01,  2.62it/s]\u001b[A\n",
      " 62%|██████▎   | 5/8 [00:01<00:01,  2.64it/s]\u001b[A\n",
      " 75%|███████▌  | 6/8 [00:02<00:00,  2.65it/s]\u001b[A\n",
      " 88%|████████▊ | 7/8 [00:16<00:04,  5.00s/it]\u001b[A\n",
      "100%|██████████| 8/8 [00:29<00:00,  3.75s/it]\u001b[A\n",
      "\n",
      "  0%|          | 0/1 [00:00<?, ?it/s]\u001b[A\n",
      "100%|██████████| 1/1 [00:00<00:00,  2.64it/s]\u001b[A\n",
      "\n",
      "  0%|          | 0/1 [00:00<?, ?it/s]\u001b[A\n",
      "100%|██████████| 1/1 [00:11<00:00, 11.50s/it]\u001b[A\n",
      "\n",
      "  0%|          | 0/1 [00:00<?, ?it/s]\u001b[A\n",
      "100%|██████████| 1/1 [00:11<00:00, 11.03s/it]\u001b[A\n",
      "100%|██████████| 1/1 [00:52<00:00, 52.89s/it]\n",
      "100%|██████████| 3/3 [00:00<00:00, 177.27it/s]\n",
      "  0%|          | 0/1 [00:00<?, ?it/s]\n",
      "  0%|          | 0/8 [00:00<?, ?it/s]\u001b[A\n",
      " 12%|█▎        | 1/8 [00:00<00:04,  1.56it/s]\u001b[A\n",
      " 25%|██▌       | 2/8 [00:01<00:03,  1.54it/s]\u001b[A\n",
      " 38%|███▊      | 3/8 [00:01<00:03,  1.52it/s]\u001b[A\n",
      " 50%|█████     | 4/8 [00:02<00:02,  1.48it/s]\u001b[A\n",
      " 62%|██████▎   | 5/8 [00:03<00:02,  1.48it/s]\u001b[A\n",
      " 75%|███████▌  | 6/8 [00:04<00:01,  1.47it/s]\u001b[A\n",
      " 88%|████████▊ | 7/8 [00:16<00:04,  4.50s/it]\u001b[A\n",
      "100%|██████████| 8/8 [00:27<00:00,  3.46s/it]\u001b[A\n",
      "100%|██████████| 1/1 [00:27<00:00, 27.71s/it]\n",
      "100%|██████████| 1/1 [00:07<00:00,  7.33s/it]\n",
      "100%|██████████| 1/1 [00:07<00:00,  7.23s/it]\n",
      "100%|██████████| 4/4 [00:01<00:00,  3.69it/s]\n",
      "100%|██████████| 3/3 [00:31<00:00, 10.37s/it]\n",
      "  0%|          | 0/1 [00:00<?, ?it/s]\n",
      "  0%|          | 0/8 [00:00<?, ?it/s]\u001b[A\n",
      " 50%|█████     | 4/8 [00:00<00:00, 33.05it/s]\u001b[A\n",
      "100%|██████████| 8/8 [00:02<00:00,  2.89it/s]\u001b[A\n",
      "\n",
      "100%|██████████| 1/1 [00:00<00:00, 29.98it/s]\n",
      "\n",
      "  0%|          | 0/1 [00:00<?, ?it/s]\u001b[A\n",
      "100%|██████████| 1/1 [00:00<00:00,  1.31it/s]\u001b[A\n",
      "\n",
      "  0%|          | 0/1 [00:00<?, ?it/s]\u001b[A\n",
      "100%|██████████| 1/1 [00:00<00:00,  1.36it/s]\u001b[A\n",
      "100%|██████████| 1/1 [00:04<00:00,  4.31s/it]\n",
      "100%|██████████| 3/3 [00:00<00:00, 307.05it/s]\n",
      "  0%|          | 0/1 [00:00<?, ?it/s]\n",
      "  0%|          | 0/8 [00:00<?, ?it/s]\u001b[A\n",
      " 25%|██▌       | 2/8 [00:00<00:00, 19.11it/s]\u001b[A\n",
      " 50%|█████     | 4/8 [00:00<00:00, 19.51it/s]\u001b[A\n",
      "100%|██████████| 8/8 [00:02<00:00,  3.16it/s]\u001b[A\n",
      "100%|██████████| 1/1 [00:02<00:00,  2.53s/it]\n",
      "100%|██████████| 1/1 [00:00<00:00,  1.83it/s]\n",
      "100%|██████████| 1/1 [00:00<00:00,  1.80it/s]\n",
      "100%|██████████| 4/4 [00:00<00:00, 68.62it/s]\n",
      "100%|██████████| 3/3 [00:01<00:00,  1.53it/s]\n"
     ]
    }
   ],
   "source": [
    "# 8 商户交易流水表（GTGSH_MERCH_TR_DTL）\n",
    "def get_merch_days_to_now(df):\n",
    "    df[\"date\"] = pd.to_datetime(df[\"merch_tr_dtl_DATE_TR\"], format=\"%Y%m%d\")\n",
    "    df_months_to_now = (df[\"date\"].max() - df[\"date\"]).dt.days\n",
    "    df[\"date_months_to_now\"] = df_months_to_now // 31  # 距今月数\n",
    "    df[\"date_weeks_to_now\"] = df_months_to_now // 7  # 距今周数\n",
    "    df[\"date_days_to_now\"] = df_months_to_now  # 距今天数\n",
    "    \n",
    "    return df\n",
    "\n",
    "def get_merch_recent_days_to_now(df_tr, month):\n",
    "    # 最近一笔交易距今天数\n",
    "    tmp_df = df_tr.groupby(['CUST_NO'])[\"date_days_to_now\"].min().to_frame(\"merch_tr_recent_days_to_now_{}\".format(str(month))).reset_index()  # 取最近一天\n",
    "    \n",
    "    return tmp_df\n",
    "\n",
    "def get_merch_max_amt_days_to_now(df_tr, month):\n",
    "    # 最大一笔金额距今天数（剔除零值交易）\n",
    "    tmp_df = df_tr.groupby(['CUST_NO']).agg({\"merch_tr_dtl_AMT_TR\": \"max\"}).reset_index()\n",
    "    tmp_df = tmp_df.merge(df_tr[['CUST_NO', 'date_days_to_now', 'merch_tr_dtl_AMT_TR']], on=[\"CUST_NO\", 'merch_tr_dtl_AMT_TR'], how=\"inner\")\n",
    "    tmp_df_day = tmp_df.groupby(['CUST_NO'])[\"date_days_to_now\"].min().to_frame(\"merch_tr_max_amt_days_to_now_{}\".format(str(month))).reset_index()  # 取最近一天\n",
    "    tmp_df_amt = tmp_df.groupby(['CUST_NO']).agg({\"merch_tr_dtl_AMT_TR\": \"max\"}).reset_index()\n",
    "    tmp_df_amt.columns = ['CUST_NO', 'merch_tr_max_amt_{}'.format(str(month))]\n",
    "\n",
    "    return tmp_df_day, tmp_df_amt\n",
    "    \n",
    "\n",
    "def get_merch_min_amt_days_to_now(df_tr, month):\n",
    "    # 最小一笔金额距今天数（剔除零值交易）\n",
    "    tmp_df = df_tr.groupby(['CUST_NO']).agg({\"merch_tr_dtl_AMT_TR\": \"min\"}).reset_index()\n",
    "    tmp_df = tmp_df.merge(df_tr[['CUST_NO', 'date_days_to_now', 'merch_tr_dtl_AMT_TR']], on=[\"CUST_NO\", 'merch_tr_dtl_AMT_TR'], how=\"inner\")\n",
    "    tmp_df_day = tmp_df.groupby(['CUST_NO'])[\"date_days_to_now\"].min().to_frame(\"merch_tr_min_amt_days_to_now_{}\".format(str(month))).reset_index()  # 取最近一天\n",
    "    tmp_df_amt = tmp_df.groupby(['CUST_NO']).agg({\"merch_tr_dtl_AMT_TR\": \"min\"}).reset_index()\n",
    "    tmp_df_amt.columns = ['CUST_NO', 'merch_tr_min_amt_{}'.format(str(month))]\n",
    "\n",
    "    return tmp_df_day, tmp_df_amt\n",
    "\n",
    "def gen_merch_day_features_by_month(df_tr, tr_feature): \n",
    "    '''\n",
    "        1 最大一笔流入/流出金额距今天数特征，剔除零值交易\n",
    "        2 最大一笔流入流出金额天数/金额轧差（没有按天聚合）\n",
    "    '''\n",
    "    ## 每月单日最大金额交易距今天数/每月最近一笔交易距每月最大单日金额交易天数\n",
    "    tmp_tr_feature = tr_feature[[\"CUST_NO\"]].drop_duplicates([\"CUST_NO\"]).copy().reset_index(drop=True)\n",
    "    for month in tqdm([0, 1, 2]):\n",
    "        df_tr_month = df_tr[df_tr[\"date_months_to_now\"]==month]\n",
    "        df_max_amt_days_to_now, df_max_amt = get_merch_max_amt_days_to_now(df_tr_month, month)\n",
    "        df_min_amt_days_to_now, df_min_amt = get_merch_min_amt_days_to_now(df_tr_month, month)\n",
    "        df_recent_days_to_now = get_merch_recent_days_to_now(df_tr_month, month)\n",
    "        tmp_tr_feature = tmp_tr_feature.merge(df_max_amt_days_to_now, how=\"left\", on=\"CUST_NO\")\n",
    "        tmp_tr_feature = tmp_tr_feature.merge(df_min_amt_days_to_now, how=\"left\", on=\"CUST_NO\")\n",
    "        tmp_tr_feature = tmp_tr_feature.merge(df_recent_days_to_now, how=\"left\", on=\"CUST_NO\")\n",
    "        tmp_tr_feature = tmp_tr_feature.merge(df_max_amt, how=\"left\", on=\"CUST_NO\")\n",
    "        tmp_tr_feature = tmp_tr_feature.merge(df_min_amt, how=\"left\", on=\"CUST_NO\")\n",
    "        tmp_tr_feature[\"merch_tr_maxamt_days_to_recent_{}\".format(str(month))] = tmp_tr_feature[\"merch_tr_recent_days_to_now_{}\".format(str(month))] - tmp_tr_feature[\"merch_tr_max_amt_days_to_now_{}\".format(str(month))]\n",
    "        tmp_tr_feature[\"merch_tr_minamt_days_to_recent_{}\".format(str(month))] = tmp_tr_feature[\"merch_tr_recent_days_to_now_{}\".format(str(month))] - tmp_tr_feature[\"merch_tr_min_amt_days_to_now_{}\".format(str(month))]\n",
    "\n",
    "        # 每月最大最小消费金额间隔\n",
    "        tmp_tr_feature[\"merch_tr_maxminamt_days_diff_{}\".format(month)] = tmp_tr_feature[\"merch_tr_max_amt_days_to_now_{}\".format(month)] - tmp_tr_feature[\"merch_tr_min_amt_days_to_now_{}\".format(month)]\n",
    "        # 每月最大最小消费金额扎差\n",
    "        tmp_tr_feature[\"merch_tr_maxminamt_diff_{}\".format(month)] = tmp_tr_feature[\"merch_tr_max_amt_{}\".format(month)] - tmp_tr_feature[\"merch_tr_min_amt_{}\".format(month)]        \n",
    "        \n",
    "    tr_feature = tr_feature.merge(tmp_tr_feature, how=\"left\", on=\"CUST_NO\")\n",
    "\n",
    "    # 不同月份最大消费金额间隔\n",
    "    tr_feature[\"merch_tr_maxamt_days_diff_0_1\"] = tr_feature[\"merch_tr_max_amt_days_to_now_1\"] - tr_feature[\"merch_tr_max_amt_days_to_now_0\"]\n",
    "    tr_feature[\"merch_tr_maxamt_days_diff_1_2\"] = tr_feature[\"merch_tr_max_amt_days_to_now_2\"] - tr_feature[\"merch_tr_max_amt_days_to_now_1\"]\n",
    "    \n",
    "    return tr_feature\n",
    "\n",
    "def gen_merch_features_by_day(df_tr, tr_feature):\n",
    "    '''\n",
    "        1 流入流出分组处理\n",
    "        2 渠道偏好特征，分母使用各自渠道的转入/转出总笔数（正常交易类特征）\n",
    "        3 最近一笔交易距今天数特征\n",
    "        4 最近一笔交易距每月最大单日金额交易天数特征\n",
    "        5 最大一笔流入流出距今天数\n",
    "    '''\n",
    "    \"\"\" 1 数据预处理 \"\"\"\n",
    "    # 1.1 按天/交易代码聚合金额\n",
    "    df_tr_by_day_cod_amt = df_tr.groupby([\"CUST_NO\", \"date_days_to_now\", \"date_weeks_to_now\", \"date_months_to_now\", \"merch_tr_dtl_COD_TR\", \"merch_tr_dtl_COD_PSG\"]).agg({\"merch_tr_dtl_AMT_TR\": \"sum\"}).reset_index()\n",
    "    df_tr_by_day_cod_amt[\"merch_tr_dtl_AMT_TR\"].fillna(0, inplace=True)\n",
    "    df_tr_by_day = df_tr_by_day_cod_amt.groupby([\"CUST_NO\", \"date_days_to_now\", \"date_weeks_to_now\", \"date_months_to_now\"]).agg({\"merch_tr_dtl_AMT_TR\": \"sum\"}).reset_index() \n",
    "\n",
    "    # 1.2 按天聚合交易代码数\n",
    "    df_tr_by_day_cod_ns = df_tr.groupby([\"CUST_NO\", \"date_days_to_now\", \"date_weeks_to_now\", \"date_months_to_now\", \"merch_tr_dtl_COD_TR\"])[\"merch_tr_dtl_COD_TR\"].agg(['nunique', 'count'])\n",
    "    df_tr_by_day_cod_ns.columns = ['nunique', 'count']\n",
    "    df_tr_by_day_cod_ns = df_tr_by_day_cod_ns.reset_index()\n",
    "    df_tr_by_day_cod = df_tr_by_day_cod_ns.groupby([\"CUST_NO\", \"date_days_to_now\", \"date_weeks_to_now\", \"date_months_to_now\"])[['nunique', 'count']].agg(\"sum\").reset_index() \n",
    "\n",
    "    # 1.3 按天聚合交易渠道数\n",
    "    df_tr_by_day_chl_ns = df_tr.groupby([\"CUST_NO\", \"date_days_to_now\", \"date_weeks_to_now\", \"date_months_to_now\", \"merch_tr_dtl_COD_PSG\"])[\"merch_tr_dtl_COD_PSG\"].agg(['nunique', 'count'])\n",
    "    df_tr_by_day_chl_ns.columns = ['nunique', 'count']\n",
    "    df_tr_by_day_chl_ns = df_tr_by_day_chl_ns.reset_index()\n",
    "    df_tr_by_day_chl = df_tr_by_day_chl_ns.groupby([\"CUST_NO\", \"date_days_to_now\", \"date_weeks_to_now\", \"date_months_to_now\"])[['nunique', 'count']].agg(\"sum\").reset_index()\n",
    "\n",
    "    \"\"\"\" 2 滑窗 \"\"\"\n",
    "    # 2.1 按日/星期/月滑窗，统计交易笔数/金额统计量（笔均/最大等）\n",
    "    tmp_tr_feature = tr_feature[[\"CUST_NO\"]].drop_duplicates([\"CUST_NO\"]).copy().reset_index(drop=True)\n",
    "    for fea1 in tqdm([\"date_months_to_now\"]):\n",
    "        # 日交易金额趋势\n",
    "        tmp_tr_feature, cols_amt = get_all_id_category_features(\n",
    "                        tmp_tr_feature, df_tr_by_day, fea1=fea1, fea2='merch_tr_dtl_AMT_TR', \n",
    "                        stats=['mean', 'max', 'min', 'median', 'std', 'sum', \"skew\", \"kurt\"]\n",
    "                    )\n",
    "\n",
    "        # 日交易笔数\n",
    "        tmp_tr_feature, _ = get_all_id_category_features(\n",
    "                        tmp_tr_feature, df_tr_by_day_cod, fea1=fea1, fea2='count',\n",
    "                        stats=[\"sum\"]\n",
    "                    )\n",
    "\n",
    "        # 日交易代码数\n",
    "        tmp_tr_feature, _ = get_all_id_category_features(\n",
    "                        tmp_tr_feature, df_tr, fea1=fea1, fea2='merch_tr_dtl_COD_TR',\n",
    "                        stats=['nunique']\n",
    "                    )\n",
    "\n",
    "        # 日交易渠道数\n",
    "        tmp_tr_feature, _ = get_all_id_category_features(\n",
    "                        tmp_tr_feature, df_tr, fea1=fea1, fea2='merch_tr_dtl_COD_PSG',\n",
    "                        stats=[\"nunique\"]\n",
    "                    )\n",
    "                    \n",
    "    tr_feature = tr_feature.merge(tmp_tr_feature, how=\"left\", on=\"CUST_NO\")\n",
    "\n",
    "    # 2.2 每月月均交易金额是否大于当月四分/二分位数（用户群体内对比）\n",
    "    # 月均交易金额\n",
    "    cols_amt_month_sum = [col for col in cols_amt if (\"date_months_to_now\" in col and \"sum\" in col)]\n",
    "    for col in tqdm(cols_amt_month_sum):\n",
    "        tr_feature[\"{}_1_4_month\".format(str(col))] = (tr_feature[\"{}\".format(col)].abs() > tr_feature[\"{}\".format(col)].quantile(0.25)).astype(float).abs()  # 流入大于1/4位数\n",
    "        tr_feature[\"{}_1_2_month\".format(str(col))] = (tr_feature[\"{}\".format(col)].abs() > tr_feature[\"{}\".format(col)].quantile(0.5)).astype(float).abs()  # 流入大于1/2位数\n",
    "    \n",
    "    \"\"\" 3 交易代码分组统计 \"\"\"\n",
    "    # 3.1 流入/流出交易金额（笔均/最大等）\n",
    "    tmp_tr_feature = tr_feature[[\"CUST_NO\"]].drop_duplicates([\"CUST_NO\"]).copy().reset_index(drop=True)\n",
    "    for fea1 in tqdm(['merch_tr_dtl_COD_TR']):\n",
    "        tmp_tr_feature, cols = get_all_id_category_features(\n",
    "                        tmp_tr_feature, df_tr_by_day_cod_amt, fea1=fea1, fea2='merch_tr_dtl_AMT_TR', \n",
    "                        stats=['mean', 'max', 'min', 'median', 'std', 'sum', \"skew\", \"kurt\"]\n",
    "                    )\n",
    "    tr_feature = tr_feature.merge(tmp_tr_feature, how=\"left\", on=\"CUST_NO\")\n",
    "\n",
    "    # 3.2 代码交易笔数\n",
    "    tmp_tr_feature = tr_feature[[\"CUST_NO\"]].drop_duplicates([\"CUST_NO\"]).copy().reset_index(drop=True)\n",
    "    for fea1 in tqdm(['merch_tr_dtl_COD_TR']): \n",
    "        tmp_tr_feature, _ = get_id_category_features(\n",
    "                                    tmp_tr_feature, df_tr, fea1=fea1, fea2='CUST_NO', stat='count'\n",
    "                                )\n",
    "    tr_feature = tr_feature.merge(tmp_tr_feature, how=\"left\", on=\"CUST_NO\")\n",
    "\n",
    "    # 3.3 渠道交易笔数\n",
    "    cols_dict = dict()\n",
    "    tmp_tr_feature = tr_feature[[\"CUST_NO\"]].drop_duplicates([\"CUST_NO\"]).copy().reset_index(drop=True)\n",
    "    for fea1 in tqdm(['merch_tr_dtl_COD_PSG']): \n",
    "        tmp_tr_feature, cols = get_id_category_features(\n",
    "                                    tmp_tr_feature, df_tr, fea1=fea1, fea2='CUST_NO', stat='count'\n",
    "                                )\n",
    "        cols_dict[fea1] = cols\n",
    "    tr_feature = tr_feature.merge(tmp_tr_feature, how=\"left\", on=\"CUST_NO\")\n",
    "\n",
    "    \"\"\" 4 渠道偏好: 每个渠道的交易笔数 / 总笔数 \"\"\"\n",
    "    tr_freq_chl = tr_feature[[\"CUST_NO\"]+cols_dict[\"merch_tr_dtl_COD_PSG\"]]\n",
    "    tr_freq = df_tr.groupby(['CUST_NO']).agg({'CUST_NO': 'count'})\n",
    "    tr_freq.columns = ['tr_freq']\n",
    "    tr_freq = tr_freq.reset_index(drop=False)\n",
    "    for chl_col in tqdm(cols_dict[\"merch_tr_dtl_COD_PSG\"]):\n",
    "        # 获取客户渠道偏好度\n",
    "        tr_prefer_chl = get_division_features(tr_freq_chl, tr_freq, chl_col, 'tr_freq')\n",
    "        # 去掉偏渠道偏好度为0的渠道\n",
    "        if tr_prefer_chl.iloc[1].values.any():\n",
    "            tr_feature = tr_feature.merge(tr_prefer_chl, on=\"CUST_NO\", how=\"left\")\n",
    "\n",
    "    return tr_feature\n",
    "\n",
    "# 加工训练集\n",
    "merch_tr_dtl_train = get_merch_days_to_now(merch_tr_dtl_train)\n",
    "merch_tr_feature_train = merch_tr_dtl_train[[\"CUST_NO\"]].drop_duplicates(['CUST_NO']).copy().reset_index(drop=True)\n",
    "merch_tr_feature_train = gen_merch_features_by_day(merch_tr_dtl_train, merch_tr_feature_train)\n",
    "merch_tr_feature_train = gen_merch_day_features_by_month(merch_tr_dtl_train, merch_tr_feature_train)\n",
    "\n",
    "# 加工测试集\n",
    "merch_tr_dtl_test_b = get_merch_days_to_now(merch_tr_dtl_test_b) \n",
    "merch_tr_feature_test = merch_tr_dtl_test_b[[\"CUST_NO\"]].drop_duplicates(['CUST_NO']).copy().reset_index(drop=True)\n",
    "merch_tr_feature_test = gen_merch_features_by_day(merch_tr_dtl_test_b, merch_tr_feature_test)\n",
    "merch_tr_feature_test = gen_merch_day_features_by_month(merch_tr_dtl_test_b, merch_tr_feature_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "5d3bf10f",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-12-11T03:33:32.919344Z",
     "iopub.status.busy": "2024-12-11T03:33:32.918804Z",
     "iopub.status.idle": "2024-12-11T03:33:33.106884Z",
     "msg_id": "efdc6bdb-94a9-4e95-8ebb-62e8f4c8b53f",
     "shell.execute_reply": "2024-12-11T03:33:33.106105Z",
     "shell.execute_reply.started": "2024-12-11T03:33:32.919315Z"
    }
   },
   "outputs": [],
   "source": [
    "# 9 企业工商基本信息表（GTGSH_ENTINFO_BASIC_INFO）\n",
    "def generate_entinfo_features(df): \n",
    "    # 判断是否首次执行\n",
    "    if 'entinfo_basic_info_DATA_DAT' in df.columns:\n",
    "        df[\"entinfo_basic_info_DATA_DAT\"] = pd.to_datetime(df[\"entinfo_basic_info_DATA_DAT\"], format=\"%Y%m%d\")\n",
    "        df[\"entinfo_basic_info_ESDATE\"] = pd.to_datetime(df[\"entinfo_basic_info_ESDATE\"], format=\"%Y%m%d\")\n",
    "        df[\"entinfo_basic_info_ESDATE_diff_DATA_DAT\"] = (df[\"entinfo_basic_info_DATA_DAT\"] - df[\"entinfo_basic_info_ESDATE\"]).dt.days\n",
    "        df[\"entinfo_basic_info_esdyears\"] = df[\"entinfo_basic_info_ESDATE_diff_DATA_DAT\"] // 365  # 注册年数\n",
    "        df.drop([\"entinfo_basic_info_ESDATE\", \"entinfo_basic_info_DATA_DAT\"], axis=1, inplace=True)\n",
    "    return df\n",
    "\n",
    "entinfo_basic_info_feature_train = generate_entinfo_features(entinfo_basic_info_train)\n",
    "entinfo_basic_info_feature_test = generate_entinfo_features(entinfo_basic_info_test_b)\n",
    "entinfo_basic_info_feature_train['is_test'] = 0\n",
    "entinfo_basic_info_feature_test['is_test'] = 1\n",
    "entinfo_basic_info_feature = pd.concat([entinfo_basic_info_feature_train, entinfo_basic_info_feature_test], axis=0)\n",
    "\n",
    "# 训练测试集注册资本二阶统计量分布差异较大，将整体省份注册资本、年数分组统计量，分别赋值到训练测试\n",
    "tmp_feature = entinfo_basic_info_feature.groupby(['entinfo_basic_info_REGPROVIN_CD'])['entinfo_basic_info_REGCAP'].agg(['min', 'max', 'mean', 'std', 'median'])\n",
    "tmp_feature.columns = ['entinfo_basic_info_REGPROVIN_CD_REGCAP_'+col for col in tmp_feature.columns if col != 'entinfo_basic_info_REGPROVIN_CD']\n",
    "entinfo_basic_info_feature = entinfo_basic_info_feature.merge(tmp_feature, on='entinfo_basic_info_REGPROVIN_CD', how='left')\n",
    "tmp_feature = entinfo_basic_info_feature.groupby(['entinfo_basic_info_REGPROVIN_CD'])['entinfo_basic_info_esdyears'].agg(['min', 'max', 'mean', 'std', 'median'])\n",
    "tmp_feature.columns = ['entinfo_basic_info_REGPROVIN_CD_esdyears'+col for col in tmp_feature.columns if col != 'entinfo_basic_info_REGPROVIN_CD']\n",
    "entinfo_basic_info_feature = entinfo_basic_info_feature.merge(tmp_feature, on='entinfo_basic_info_REGPROVIN_CD', how='left')\n",
    "del tmp_feature\n",
    "\n",
    "# 拆分训练测试集\n",
    "entinfo_basic_info_feature_train = entinfo_basic_info_feature[entinfo_basic_info_feature['is_test'] == 0]\n",
    "del entinfo_basic_info_feature_train['is_test']\n",
    "entinfo_basic_info_feature_test = entinfo_basic_info_feature[entinfo_basic_info_feature['is_test'] == 1]\n",
    "del entinfo_basic_info_feature_test['is_test']"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "65490aeb",
   "metadata": {},
   "source": [
    "# 2 模型训练\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1d245890",
   "metadata": {},
   "source": [
    "## 2.1 IRF\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e5b8d155",
   "metadata": {},
   "source": [
    "### 2.1.1 特征合并\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "5a6098cb",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-12-11T03:33:33.108433Z",
     "iopub.status.busy": "2024-12-11T03:33:33.107916Z",
     "iopub.status.idle": "2024-12-11T03:33:49.662180Z",
     "msg_id": "66543ddb-d0f0-4f38-951c-0ca0ec3b081e",
     "shell.execute_reply": "2024-12-11T03:33:49.661392Z",
     "shell.execute_reply.started": "2024-12-11T03:33:33.108405Z"
    }
   },
   "outputs": [],
   "source": [
    "df_train = target_train.merge(nature_train, on='CUST_NO', how='left')\n",
    "df_train = df_train.merge(asset_train, on='CUST_NO', how='left')\n",
    "df_train = df_train.merge(prod_hold_train, on='CUST_NO', how='left')\n",
    "df_train = df_train.merge(entinfo_basic_info_feature_train, on='CUST_NO', how='left')\n",
    "df_train = df_train.merge(tr_ibtf_train, on='CUST_NO', how='left')\n",
    "df_train = df_train.merge(tr_tpay_train, on='CUST_NO', how='left')\n",
    "df_train = df_train.merge(aps_feature_train, on='CUST_NO', how='left')\n",
    "df_train = df_train.merge(mb_feature_train, on='CUST_NO', how='left')\n",
    "df_train = df_train.merge(mb_join_op_feature_train, on='CUST_NO', how='left')\n",
    "df_train = df_train.merge(mb_embed_month_1, on='CUST_NO', how='left')\n",
    "df_train = df_train.merge(mb_embed_month_2, on='CUST_NO', how='left')\n",
    "df_train = df_train.merge(mb_embed_month_3, on='CUST_NO', how='left')\n",
    "df_train = df_train.merge(merch_tr_feature_train, on='CUST_NO', how='left')\n",
    "\n",
    "df_test = target_test_b.merge(nature_test_b, on='CUST_NO', how='left')\n",
    "df_test = df_test.merge(asset_test_b, on='CUST_NO', how='left')\n",
    "df_test = df_test.merge(prod_hold_test_b, on='CUST_NO', how='left')\n",
    "df_test = df_test.merge(entinfo_basic_info_feature_test, on='CUST_NO', how='left')\n",
    "df_test = df_test.merge(tr_ibtf_test_b, on='CUST_NO', how='left')\n",
    "df_test = df_test.merge(tr_tpay_test_b, on='CUST_NO', how='left')\n",
    "df_test = df_test.merge(aps_feature_test, on='CUST_NO', how='left')\n",
    "df_test = df_test.merge(mb_feature_test, on='CUST_NO', how='left')\n",
    "df_test = df_test.merge(mb_join_op_feature_test, on='CUST_NO', how='left')\n",
    "df_test = df_test.merge(mb_embed_month_1, on='CUST_NO', how='left')\n",
    "df_test = df_test.merge(mb_embed_month_2, on='CUST_NO', how='left')\n",
    "df_test = df_test.merge(mb_embed_month_3, on='CUST_NO', how='left')\n",
    "df_test = df_test.merge(merch_tr_feature_test, on='CUST_NO', how='left')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "be2d0e15",
   "metadata": {},
   "source": [
    "### 2.1.2 特征筛选\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "0a1d6547",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-12-11T03:33:49.663887Z",
     "iopub.status.busy": "2024-12-11T03:33:49.663351Z",
     "iopub.status.idle": "2024-12-11T03:34:09.164950Z",
     "msg_id": "efdb8f45-29e9-4209-9679-9e6d2f147d4e",
     "shell.execute_reply": "2024-12-11T03:34:09.164216Z",
     "shell.execute_reply.started": "2024-12-11T03:33:49.663859Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "剔除高占空比特征前： (60584, 2459)\n",
      "剔除高占空比特征后： (60584, 1789)\n",
      "剔除高占空比特征前： (6183, 2262)\n",
      "剔除高占空比特征后： (6183, 1780)\n",
      "训练测试集特征取交后： (6183, 1757)\n",
      "['DATA_DAT_x', 'nature_DATA_DAT', 'asset_DATA_DAT', 'prod_hold_DATA_DAT', 'entinfo_basic_info_REGPROVIN_CD_esdyearsmin', 'DATA_DAT_y']\n",
      "剔除单一值特征特征后： (6183, 1751)\n",
      "训练测试集分布不一致特征： ['aps_CUST_NO_APSDTRCHL_CUST_NO_count_55c135066d677b567f25a706ce5b3cc5_in', 'aps_CUST_NO_APSDTRCHL_CUST_NO_count_7dcdd7724d3ac7a03ea565c65d8376e3_in', 'aps_CUST_NO_APSDTRCHL_CUST_NO_count_55c135066d677b567f25a706ce5b3cc5_div_tr_freq_in', 'aps_CUST_NO_APSDTRCHL_CUST_NO_count_7dcdd7724d3ac7a03ea565c65d8376e3_div_tr_freq_in', 'aps_CUST_NO_APSDTRCHL_CUST_NO_count_9b9e2ea4b767c480f06e6c7d70da7a60_out', 'aps_CUST_NO_APSDTRCHL_CUST_NO_count_9b9e2ea4b767c480f06e6c7d70da7a60_div_tr_freq_out', 'CUST_NO_merch_tr_dtl_COD_TR_CUST_NO_count_1ffdcf402e5ecf00405b19db93c0a37a', 'CUST_NO_merch_tr_dtl_COD_TR_CUST_NO_count_2f1a1ec13092261011ae4d8d1ab00389']\n",
      "剔除分布异常特征特征后： (6183, 1751)\n"
     ]
    }
   ],
   "source": [
    "''' 特征筛选 '''\n",
    "# 剔除缺失值占比超过0.98的特征（NOTE: 重要！训练/测试分开剔除）\n",
    "def stat_df(df):\n",
    "    stats = []\n",
    "    for col in df.columns:\n",
    "        stats.append((col, df[col].nunique(),df[col].isnull().sum()*100/df.shape[0],\n",
    "                     df[col].value_counts(normalize=True,dropna=False).values[0]*100,df[col].dtype))\n",
    "    stats_df = pd.DataFrame(stats, columns=['特征','唯一数数量','缺失值占比','最多数占比','类型'])\n",
    "    stats_df.sort_values('缺失值占比',ascending=False)\n",
    "    return stats_df\n",
    "\n",
    "def del_nan_col(feature):\n",
    "    print(\"剔除高占空比特征前：\", feature.shape)\n",
    "    feature_res = stat_df(feature)\n",
    "    feature_res = feature_res[feature_res['缺失值占比'] <= 98]\n",
    "    feature_names_res = [col for col in feature.columns if col in list(feature_res['特征'])]\n",
    "    feature = feature[feature_names_res]\n",
    "    print(\"剔除高占空比特征后：\", feature.shape)\n",
    "    \n",
    "    return feature \n",
    "\n",
    "df_train = del_nan_col(df_train)\n",
    "df_test = del_nan_col(df_test)\n",
    "\n",
    "# 取特征交集\n",
    "df_test = df_test[[col for col in df_test.columns if col in df_train.columns]]\n",
    "print(\"训练测试集特征取交后：\", df_test.shape)\n",
    "\n",
    "# 剔除单一值特征\n",
    "def search_single (df):\n",
    "    features = []\n",
    "    numerical_feature = list(df.select_dtypes(exclude=['object']).columns)\n",
    "    object_feature = list(df.select_dtypes(include=['object']).columns)\n",
    "    unique_feature = []\n",
    "    other_feature = []\n",
    "    for feature in numerical_feature:\n",
    "        temp = df[feature].nunique()\n",
    "        if temp == 1:\n",
    "            unique_feature.append(feature)\n",
    "        else:\n",
    "            other_feature.append(feature)\n",
    "    features.append(unique_feature)\n",
    "    features.append(other_feature)\n",
    "    features.append(object_feature)\n",
    "    return features\n",
    "unique_cols = search_single(df_train)[0]\n",
    "print(unique_cols)\n",
    "df_train = df_train[[i for i in df_train.columns if i not in unique_cols]]\n",
    "df_test = df_test[[i for i in df_test.columns if i not in unique_cols]]\n",
    "print(\"剔除单一值特征特征后：\", df_test.shape)\n",
    "\n",
    "# 剔除训练测试集差异大的特征\n",
    "drop_adval_cols = ['aps_CUST_NO_APSDTRCHL_CUST_NO_count_55c135066d677b567f25a706ce5b3cc5_in', 'aps_CUST_NO_APSDTRCHL_CUST_NO_count_7dcdd7724d3ac7a03ea565c65d8376e3_in', 'aps_CUST_NO_APSDTRCHL_CUST_NO_count_55c135066d677b567f25a706ce5b3cc5_div_tr_freq_in', 'aps_CUST_NO_APSDTRCHL_CUST_NO_count_7dcdd7724d3ac7a03ea565c65d8376e3_div_tr_freq_in', 'aps_CUST_NO_APSDTRCHL_CUST_NO_count_9b9e2ea4b767c480f06e6c7d70da7a60_out', 'aps_CUST_NO_APSDTRCHL_CUST_NO_count_9b9e2ea4b767c480f06e6c7d70da7a60_div_tr_freq_out', 'CUST_NO_merch_tr_dtl_COD_TR_CUST_NO_count_1ffdcf402e5ecf00405b19db93c0a37a', 'CUST_NO_merch_tr_dtl_COD_TR_CUST_NO_count_2f1a1ec13092261011ae4d8d1ab00389']\n",
    "print(\"训练测试集分布不一致特征：\", drop_adval_cols)\n",
    "df_train = df_train[[i for i in df_train.columns if i not in drop_adval_cols]]\n",
    "df_test = df_test[[i for i in df_test.columns if i not in drop_adval_cols]]\n",
    "print(\"剔除分布异常特征特征后：\", df_test.shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b983f07f",
   "metadata": {},
   "source": [
    "### 2.1.3 类别特征编码\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "6c1a8659",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-12-11T03:34:09.166331Z",
     "iopub.status.busy": "2024-12-11T03:34:09.165962Z",
     "iopub.status.idle": "2024-12-11T03:34:17.518134Z",
     "msg_id": "f891e191-14d4-4e57-b836-d6ac4b55a6c4",
     "shell.execute_reply": "2024-12-11T03:34:17.517322Z",
     "shell.execute_reply.started": "2024-12-11T03:34:09.166302Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "合并： (66767, 1775)\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 4/4 [00:00<00:00, 82.40it/s]\n"
     ]
    }
   ],
   "source": [
    "''' 类别特征编码 '''\n",
    "from sklearn.preprocessing import OneHotEncoder\n",
    "from sklearn.model_selection import StratifiedKFold, KFold\n",
    "\n",
    "# 1 特征合并\n",
    "feature = pd.concat([df_train, df_test], axis=0)\n",
    "print(\"合并：\", feature.shape)\n",
    "\n",
    "# 2 顺序编码\n",
    "cat_cols = ['entinfo_basic_info_ENTSTATUS_CD', 'entinfo_basic_info_INDS_CD', 'entinfo_basic_info_REGPROVIN_CD', 'entinfo_basic_info_ENTTYPE_CD']\n",
    "cat_cols = [col for col in df_train.columns if col in cat_cols]\n",
    "for col in tqdm(cat_cols):\n",
    "    map_dict = dict(zip(list(feature[col].value_counts().index), range(feature[col].nunique())))\n",
    "    feature[col] = feature[col].map(map_dict)\n",
    "\n",
    "# 3 OneHot编码\n",
    "cat_cols = ['entinfo_basic_info_ENTSTATUS_CD', 'entinfo_basic_info_REGPROVIN_CD', 'entinfo_basic_info_ENTTYPE_CD']\n",
    "cat_features = feature[cat_cols]\n",
    "cat_col_encoder = OneHotEncoder()\n",
    "cat_features = cat_col_encoder.fit_transform(cat_features).toarray()\n",
    "one_hot_cols = []\n",
    "for i, one_hot_col in enumerate(cat_cols):\n",
    "    one_hot_cols += ['_'.join([one_hot_col, str(int(col)) if not np.isnan(col) else str(col)]) for col in list(cat_col_encoder.categories_[i])]\n",
    "cat_features = pd.DataFrame(cat_features, columns=one_hot_cols)\n",
    "feature.drop(cat_cols, axis=1, inplace=True)\n",
    "feature = pd.concat([feature.reset_index(drop=True), cat_features], axis=1)\n",
    "\n",
    "# 特征拆分\n",
    "df_train = feature[feature.FLAG.notnull()].reset_index(drop=True)\n",
    "df_test = feature[feature.FLAG.isnull()].reset_index(drop=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "66a5fc25",
   "metadata": {},
   "source": [
    "### 2.1.4 模型训练\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "508166e1",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-12-11T03:34:17.519999Z",
     "iopub.status.busy": "2024-12-11T03:34:17.519342Z",
     "iopub.status.idle": "2024-12-11T03:34:36.384395Z",
     "msg_id": "eb91a16e-a8f7-4e27-b739-90f0a3c144da",
     "shell.execute_reply": "2024-12-11T03:34:36.383636Z",
     "shell.execute_reply.started": "2024-12-11T03:34:17.519963Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1814\n",
      "训练集维度：(60584, 1814)\n",
      "测试集维度：(6183, 1814)\n",
      "================5==============\n",
      "\n",
      "Fold_1 Training ================================\n",
      "\n",
      "\n",
      "Fold_2 Training ================================\n",
      "\n",
      "\n",
      "Fold_3 Training ================================\n",
      "\n",
      "\n",
      "Fold_4 Training ================================\n",
      "\n",
      "\n",
      "Fold_5 Training ================================\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/tmp/ipykernel_1681/3741269870.py:60: RuntimeWarning: invalid value encountered in true_divide\n",
      "  f1_scores = (precisions * recalls) / (precisions + recalls)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "train's precision: 0.160944316140621\n",
      "train's recall: 0.49479331019248973\n",
      "train's auc: 0.6437031631679377\n",
      "train's ks: 0.21212840370144131\n",
      "train's F1: 0.2428842504743833\n",
      "最佳阈值:  0.4709547511809964\n",
      "打印分类报告: \n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "         0.0       0.92      0.70      0.79     54246\n",
      "         1.0       0.16      0.49      0.24      6338\n",
      "\n",
      "    accuracy                           0.68     60584\n",
      "   macro avg       0.54      0.60      0.52     60584\n",
      "weighted avg       0.84      0.68      0.74     60584\n",
      "\n"
     ]
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 标准化预处理\n",
    "import pandas as pd\n",
    "from sklearn.ensemble import IsolationForest\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "\n",
    "# 预删除特征 \n",
    "drop_cols = [\n",
    "    'CUST_NO', 'FLAG', 'is_test', 'entinfo_basic_info_INDS_CD_truncated' \n",
    "]\n",
    "feature_name = [i for i in df_train.columns if i not in drop_cols]\n",
    "X_train = df_train[feature_name].reset_index(drop=True)\n",
    "X_test = df_test[feature_name].reset_index(drop=True)\n",
    "y = df_train['FLAG'].reset_index(drop=True)\n",
    "print(len(feature_name))\n",
    "print(\"训练集维度：{}\".format(X_train.shape))\n",
    "print(\"测试集维度：{}\".format(X_test.shape))\n",
    "\n",
    "X_train = pd.DataFrame(X_train).replace([np.inf, -np.inf], np.nan).fillna(0).values\n",
    "X_test = pd.DataFrame(X_test).replace([np.inf, -np.inf], np.nan).fillna(0).values\n",
    "\n",
    "def sigmoid(x):\n",
    "    return 1.0 / (1+np.exp(-x))\n",
    "\n",
    "folds = 5\n",
    "seeds = [5]    \n",
    "oof = np.zeros(df_train.shape[0])\n",
    "prediction = np.zeros(df_test.shape[0])\n",
    "\n",
    "for seed in seeds:\n",
    "    clf = IsolationForest(n_estimators=100, random_state=42)\n",
    "    \n",
    "    print(\"================{}==============\".format(seed))\n",
    "    skf = StratifiedKFold(n_splits=folds, random_state=seed, shuffle=True)\n",
    "    for index, (trn_idx, val_idx) in enumerate(skf.split(X_train, y)):\n",
    "        X_train_ = X_train[trn_idx]\n",
    "        Y_train = y.iloc[trn_idx]\n",
    "        X_val = X_train[val_idx]\n",
    "        Y_val = y.iloc[val_idx]\n",
    "        \n",
    "        print('\\nFold_{} Training ================================\\n'.format(index + 1))\n",
    "        rf_model = clf.fit(X_train_)\n",
    "        pred_val = 1 - sigmoid(clf.decision_function(X_val))       \n",
    "        oof[val_idx] += pred_val\n",
    "        pred_test = 1 - sigmoid(clf.decision_function(X_test))\n",
    "        prediction += pred_test\n",
    "\n",
    "        del rf_model, pred_val, pred_test, X_train_, Y_train, X_val, Y_val\n",
    "        gc.collect()\n",
    "        \n",
    "    \n",
    "prediction = prediction / (folds*len(seeds))\n",
    "oof = oof / len(seeds)\n",
    "\n",
    "## 二分类最佳阈值搜索\n",
    "# 最佳阈值搜索\n",
    "from sklearn.metrics import classification_report, precision_score, recall_score, f1_score, precision_recall_curve,  roc_curve, auc\n",
    "\n",
    "def do_metrics(y_true, y_pred):\n",
    "    precisions, recalls, thresholds = precision_recall_curve(y_true, y_pred)\n",
    "    f1_scores = (precisions * recalls) / (precisions + recalls)\n",
    "    best_t = thresholds[np.argmax(f1_scores[np.isfinite(f1_scores)])]  # 寻找最佳阈值\n",
    "\n",
    "    y_1 = [1 if x >= best_t else 0 for x in y_pred]\n",
    "    clf_report1 = classification_report(y_true.values, y_1)\n",
    "    curr_f1score = f1_score(y_true, y_1)\n",
    "    recall = recall_score(y_true, y_1)\n",
    "    precision = precision_score(y_true, y_1)\n",
    "        \n",
    "    fpr, tpr ,th = roc_curve(y_true, y_pred)\n",
    "    curr_auc = auc(fpr, tpr)\n",
    "\n",
    "    print(f\"train's precision: {precision}\")\n",
    "    print(f\"train's recall: {recall}\")\n",
    "\n",
    "    print(f\"train's auc: {auc(fpr,tpr)}\")\n",
    "    print(f\"train's ks: {max(tpr-fpr)}\")\n",
    "    print(f\"train's F1: {curr_f1score}\")\n",
    "    print(f\"最佳阈值:  {str(best_t)}\")\n",
    "    print('打印分类报告: ')\n",
    "    print(clf_report1)\n",
    "\n",
    "    return best_t, curr_f1score, curr_auc\n",
    "    \n",
    "\n",
    "best_t, curr_f1score, curr_auc = do_metrics(y, oof)\n",
    "\n",
    "# 绘制roc曲线\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn.metrics import roc_curve, auc\n",
    "\n",
    "fpr, tpr ,th = roc_curve(y, oof)\n",
    "\n",
    "plt.plot(fpr,tpr, 'k--', label='ROC(area={0:2f})'.format(curr_auc), lw=2)\n",
    "plt.xlim([-0.05, 1.05])\n",
    "plt.ylim([-0.05, 1.05])\n",
    "plt.xlabel('FPR')\n",
    "plt.ylabel('TPR')\n",
    "plt.title('ROC Curve')\n",
    "plt.legend(loc='lower right')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "bd90bc39",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-12-11T03:34:36.385911Z",
     "iopub.status.busy": "2024-12-11T03:34:36.385450Z",
     "iopub.status.idle": "2024-12-11T03:34:36.403961Z",
     "msg_id": "a84b5d4a-ac4c-47e2-aace-7014a2662be4",
     "shell.execute_reply": "2024-12-11T03:34:36.403293Z",
     "shell.execute_reply.started": "2024-12-11T03:34:36.385882Z"
    }
   },
   "outputs": [],
   "source": [
    "pkl_name = './feature/20241104_IRF_mbV4-V3_B.pkl'\n",
    "if os.path.exists(pkl_name):\n",
    "    with open(pkl_name, 'rb') as f:\n",
    "        irf_feature_train, irf_feature_test = pickle.load(f)\n",
    "else:\n",
    "    # 保存特征\n",
    "    with open(pkl_name, 'wb') as f:\n",
    "        irf_feature_train = pd.DataFrame({'CUST_NO': df_train[\"CUST_NO\"], \"irf_feat\": oof})\n",
    "        irf_feature_test = pd.DataFrame({'CUST_NO': df_test[\"CUST_NO\"], \"irf_feat\": prediction})\n",
    "        pickle.dump([irf_feature_train, irf_feature_test], f)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1781979d",
   "metadata": {},
   "source": [
    "## 2.2 ATEC\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b4685c06",
   "metadata": {},
   "source": [
    "### 2.2.1 特征合并\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "id": "72471bbb",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-12-11T09:12:00.994798Z",
     "iopub.status.busy": "2024-12-11T09:12:00.994269Z",
     "iopub.status.idle": "2024-12-11T09:12:18.833909Z",
     "msg_id": "9bb7e636-24f8-4b6d-9d62-d8a4b2381c13",
     "shell.execute_reply": "2024-12-11T09:12:18.833075Z",
     "shell.execute_reply.started": "2024-12-11T09:12:00.994767Z"
    },
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "df_train = target_train.merge(nature_train, on='CUST_NO', how='left')\n",
    "df_train = df_train.merge(asset_train, on='CUST_NO', how='left')\n",
    "df_train = df_train.merge(prod_hold_train, on='CUST_NO', how='left')\n",
    "df_train = df_train.merge(entinfo_basic_info_feature_train, on='CUST_NO', how='left')\n",
    "df_train = df_train.merge(tr_ibtf_train, on='CUST_NO', how='left')\n",
    "df_train = df_train.merge(tr_tpay_train, on='CUST_NO', how='left')\n",
    "df_train = df_train.merge(aps_feature_train, on='CUST_NO', how='left')\n",
    "df_train = df_train.merge(mb_feature_train, on='CUST_NO', how='left')\n",
    "df_train = df_train.merge(mb_join_op_feature_train, on='CUST_NO', how='left')\n",
    "df_train = df_train.merge(mb_embed_month_1, on='CUST_NO', how='left')\n",
    "df_train = df_train.merge(mb_embed_month_2, on='CUST_NO', how='left')\n",
    "df_train = df_train.merge(mb_embed_month_3, on='CUST_NO', how='left')\n",
    "df_train = df_train.merge(mb_model_embed_month_1, on='CUST_NO', how='left')\n",
    "df_train = df_train.merge(merch_tr_feature_train, on='CUST_NO', how='left')\n",
    "df_train = df_train.merge(irf_feature_train, on='CUST_NO', how='left')\n",
    "df_train = df_train.merge(mb_join_op_unique_feature_train, on='CUST_NO', how='left')\n",
    "\n",
    "df_test = target_test_b.merge(nature_test_b, on='CUST_NO', how='left')\n",
    "df_test = df_test.merge(asset_test_b, on='CUST_NO', how='left')\n",
    "df_test = df_test.merge(prod_hold_test_b, on='CUST_NO', how='left')\n",
    "df_test = df_test.merge(entinfo_basic_info_feature_test, on='CUST_NO', how='left')\n",
    "df_test = df_test.merge(tr_ibtf_test_b, on='CUST_NO', how='left')\n",
    "df_test = df_test.merge(tr_tpay_test_b, on='CUST_NO', how='left')\n",
    "df_test = df_test.merge(aps_feature_test, on='CUST_NO', how='left')\n",
    "df_test = df_test.merge(mb_feature_test, on='CUST_NO', how='left')\n",
    "df_test = df_test.merge(mb_join_op_feature_test, on='CUST_NO', how='left')\n",
    "df_test = df_test.merge(mb_embed_month_1, on='CUST_NO', how='left')\n",
    "df_test = df_test.merge(mb_embed_month_2, on='CUST_NO', how='left')\n",
    "df_test = df_test.merge(mb_embed_month_3, on='CUST_NO', how='left')\n",
    "df_test = df_test.merge(mb_model_embed_month_1, on='CUST_NO', how='left')\n",
    "df_test = df_test.merge(merch_tr_feature_test, on='CUST_NO', how='left')\n",
    "df_test = df_test.merge(irf_feature_test, on='CUST_NO', how='left')\n",
    "df_test = df_test.merge(mb_join_op_unique_feature_test, on='CUST_NO', how='left')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "11e7e9a5",
   "metadata": {},
   "source": [
    "### 2.2.2 特征筛选\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "id": "a209c5a5",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-12-11T09:12:18.835931Z",
     "iopub.status.busy": "2024-12-11T09:12:18.835537Z",
     "iopub.status.idle": "2024-12-11T09:12:38.805811Z",
     "msg_id": "e0c64bb8-bdf7-4cd7-8fcd-ec45348da44d",
     "shell.execute_reply": "2024-12-11T09:12:38.804984Z",
     "shell.execute_reply.started": "2024-12-11T09:12:18.835903Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "剔除高占空比特征前： (60584, 2579)\n",
      "剔除高占空比特征后： (60584, 1894)\n",
      "剔除高占空比特征前： (6183, 2382)\n",
      "剔除高占空比特征后： (6183, 1885)\n",
      "训练测试集特征取交后： (6183, 1862)\n",
      "['DATA_DAT_x', 'nature_DATA_DAT', 'asset_DATA_DAT', 'prod_hold_DATA_DAT', 'entinfo_basic_info_REGPROVIN_CD_esdyearsmin', 'DATA_DAT_y']\n",
      "剔除单一值特征特征后： (6183, 1856)\n",
      "训练测试集分布不一致特征： ['aps_CUST_NO_APSDTRCHL_CUST_NO_count_55c135066d677b567f25a706ce5b3cc5_in', 'aps_CUST_NO_APSDTRCHL_CUST_NO_count_7dcdd7724d3ac7a03ea565c65d8376e3_in', 'aps_CUST_NO_APSDTRCHL_CUST_NO_count_55c135066d677b567f25a706ce5b3cc5_div_tr_freq_in', 'aps_CUST_NO_APSDTRCHL_CUST_NO_count_7dcdd7724d3ac7a03ea565c65d8376e3_div_tr_freq_in', 'aps_CUST_NO_APSDTRCHL_CUST_NO_count_9b9e2ea4b767c480f06e6c7d70da7a60_out', 'aps_CUST_NO_APSDTRCHL_CUST_NO_count_9b9e2ea4b767c480f06e6c7d70da7a60_div_tr_freq_out', 'CUST_NO_merch_tr_dtl_COD_TR_CUST_NO_count_1ffdcf402e5ecf00405b19db93c0a37a', 'CUST_NO_merch_tr_dtl_COD_TR_CUST_NO_count_2f1a1ec13092261011ae4d8d1ab00389']\n",
      "剔除分布异常特征特征后： (6183, 1856)\n"
     ]
    }
   ],
   "source": [
    "''' 特征筛选 '''\n",
    "# 剔除缺失值占比超过0.98的特征（NOTE: 重要！训练/测试分开剔除）\n",
    "def stat_df(df):\n",
    "    stats = []\n",
    "    for col in df.columns:\n",
    "        stats.append((col, df[col].nunique(),df[col].isnull().sum()*100/df.shape[0],\n",
    "                     df[col].value_counts(normalize=True,dropna=False).values[0]*100,df[col].dtype))\n",
    "    stats_df = pd.DataFrame(stats, columns=['特征','唯一数数量','缺失值占比','最多数占比','类型'])\n",
    "    stats_df.sort_values('缺失值占比',ascending=False)\n",
    "    return stats_df\n",
    "\n",
    "def del_nan_col(feature):\n",
    "    print(\"剔除高占空比特征前：\", feature.shape)\n",
    "    feature_res = stat_df(feature)\n",
    "    feature_res = feature_res[feature_res['缺失值占比'] <= 98]\n",
    "    feature_names_res = [col for col in feature.columns if col in list(feature_res['特征'])]\n",
    "    feature = feature[feature_names_res]\n",
    "    print(\"剔除高占空比特征后：\", feature.shape)\n",
    "    \n",
    "    return feature \n",
    "\n",
    "df_train = del_nan_col(df_train)\n",
    "df_test = del_nan_col(df_test)\n",
    "\n",
    "# 取特征交集\n",
    "df_test = df_test[[col for col in df_test.columns if col in df_train.columns]]\n",
    "print(\"训练测试集特征取交后：\", df_test.shape)\n",
    "\n",
    "# 剔除单一值特征\n",
    "def search_single (df):\n",
    "    features = []\n",
    "    numerical_feature = list(df.select_dtypes(exclude=['object']).columns)\n",
    "    object_feature = list(df.select_dtypes(include=['object']).columns)\n",
    "    unique_feature = []\n",
    "    other_feature = []\n",
    "    for feature in numerical_feature:\n",
    "        temp = df[feature].nunique()\n",
    "        if temp == 1:\n",
    "            unique_feature.append(feature)\n",
    "        else:\n",
    "            other_feature.append(feature)\n",
    "    features.append(unique_feature)\n",
    "    features.append(other_feature)\n",
    "    features.append(object_feature)\n",
    "    return features\n",
    "unique_cols = search_single(df_train)[0]\n",
    "print(unique_cols)\n",
    "df_train = df_train[[i for i in df_train.columns if i not in unique_cols]]\n",
    "df_test = df_test[[i for i in df_test.columns if i not in unique_cols]]\n",
    "print(\"剔除单一值特征特征后：\", df_test.shape)\n",
    "\n",
    "# 剔除训练测试集差异大的特征\n",
    "drop_adval_cols = ['aps_CUST_NO_APSDTRCHL_CUST_NO_count_55c135066d677b567f25a706ce5b3cc5_in', 'aps_CUST_NO_APSDTRCHL_CUST_NO_count_7dcdd7724d3ac7a03ea565c65d8376e3_in', 'aps_CUST_NO_APSDTRCHL_CUST_NO_count_55c135066d677b567f25a706ce5b3cc5_div_tr_freq_in', 'aps_CUST_NO_APSDTRCHL_CUST_NO_count_7dcdd7724d3ac7a03ea565c65d8376e3_div_tr_freq_in', 'aps_CUST_NO_APSDTRCHL_CUST_NO_count_9b9e2ea4b767c480f06e6c7d70da7a60_out', 'aps_CUST_NO_APSDTRCHL_CUST_NO_count_9b9e2ea4b767c480f06e6c7d70da7a60_div_tr_freq_out', 'CUST_NO_merch_tr_dtl_COD_TR_CUST_NO_count_1ffdcf402e5ecf00405b19db93c0a37a', 'CUST_NO_merch_tr_dtl_COD_TR_CUST_NO_count_2f1a1ec13092261011ae4d8d1ab00389']\n",
    "print(\"训练测试集分布不一致特征：\", drop_adval_cols)\n",
    "df_train = df_train[[i for i in df_train.columns if i not in drop_adval_cols]]\n",
    "df_test = df_test[[i for i in df_test.columns if i not in drop_adval_cols]]\n",
    "print(\"剔除分布异常特征特征后：\", df_test.shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "64427824",
   "metadata": {},
   "source": [
    "### 2.2.3 类别特征编码\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "id": "eb1d8c1a",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-12-11T09:12:38.807309Z",
     "iopub.status.busy": "2024-12-11T09:12:38.806907Z",
     "iopub.status.idle": "2024-12-11T09:12:47.153893Z",
     "msg_id": "6377bb9c-8db0-48dd-ad87-96d5aa636a73",
     "shell.execute_reply": "2024-12-11T09:12:47.153048Z",
     "shell.execute_reply.started": "2024-12-11T09:12:38.807281Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "合并： (66767, 1880)\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 4/4 [00:00<00:00, 79.10it/s]\n"
     ]
    }
   ],
   "source": [
    "''' 类别特征编码 '''\n",
    "from sklearn.preprocessing import OneHotEncoder\n",
    "from sklearn.model_selection import StratifiedKFold, KFold\n",
    "\n",
    "# 1 特征合并\n",
    "feature = pd.concat([df_train, df_test], axis=0)\n",
    "print(\"合并：\", feature.shape)\n",
    "\n",
    "# 2 顺序编码\n",
    "cat_cols = ['entinfo_basic_info_ENTSTATUS_CD', 'entinfo_basic_info_INDS_CD', 'entinfo_basic_info_REGPROVIN_CD', 'entinfo_basic_info_ENTTYPE_CD']\n",
    "cat_cols = [col for col in df_train.columns if col in cat_cols]\n",
    "for col in tqdm(cat_cols):\n",
    "    map_dict = dict(zip(list(feature[col].value_counts().index), range(feature[col].nunique())))\n",
    "    feature[col] = feature[col].map(map_dict)\n",
    "\n",
    "# 3 OneHot编码\n",
    "cat_cols = ['entinfo_basic_info_ENTSTATUS_CD', 'entinfo_basic_info_REGPROVIN_CD', 'entinfo_basic_info_ENTTYPE_CD']\n",
    "cat_features = feature[cat_cols]\n",
    "cat_col_encoder = OneHotEncoder()\n",
    "cat_features = cat_col_encoder.fit_transform(cat_features).toarray()\n",
    "one_hot_cols = []\n",
    "for i, one_hot_col in enumerate(cat_cols):\n",
    "    one_hot_cols += ['_'.join([one_hot_col, str(int(col)) if not np.isnan(col) else str(col)]) for col in list(cat_col_encoder.categories_[i])]\n",
    "cat_features = pd.DataFrame(cat_features, columns=one_hot_cols)\n",
    "feature.drop(cat_cols, axis=1, inplace=True)\n",
    "feature = pd.concat([feature.reset_index(drop=True), cat_features], axis=1)\n",
    "\n",
    "# 特征拆分\n",
    "df_train = feature[feature.FLAG.notnull()].reset_index(drop=True)\n",
    "df_test = feature[feature.FLAG.isnull()].reset_index(drop=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "id": "04ee15dc",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-12-11T09:12:47.156631Z",
     "iopub.status.busy": "2024-12-11T09:12:47.155921Z",
     "iopub.status.idle": "2024-12-11T09:12:55.672455Z",
     "msg_id": "b5fadd77-bd42-41f0-97d0-5cddb178c5eb",
     "shell.execute_reply": "2024-12-11T09:12:55.671659Z",
     "shell.execute_reply.started": "2024-12-11T09:12:47.156603Z"
    }
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 1/1 [00:00<00:00,  2.02it/s]\n",
      "100%|██████████| 1/1 [00:00<00:00,  2.28it/s]\n",
      "100%|██████████| 1/1 [00:00<00:00,  2.32it/s]\n",
      "100%|██████████| 1/1 [00:00<00:00,  2.17it/s]\n",
      "100%|██████████| 1/1 [00:00<00:00,  2.19it/s]\n",
      "100%|██████████| 1/1 [00:00<00:00,  4.10it/s]\n"
     ]
    }
   ],
   "source": [
    "# 4 目标编码\n",
    "cat_list = ['entinfo_basic_info_INDS_CD']\n",
    "def stat(df, df_merge, group_by, agg):\n",
    "    group = df.groupby(group_by).agg(agg)\n",
    "    columns = []\n",
    "    for on, methods in agg.items():\n",
    "        for method in methods:\n",
    "            columns.append('{}_{}_{}'.format('_'.join(group_by), on, method))\n",
    "    group.columns = columns\n",
    "    group.reset_index(inplace=True)\n",
    "    df_merge = df_merge.merge(group, on=group_by, how='left')\n",
    "    del (group)\n",
    "    gc.collect()\n",
    "    return df_merge\n",
    "\n",
    "def statis_feat(df_know, df_unknow,cat_list):\n",
    "    for f in tqdm(cat_list):\n",
    "        df_unknow = stat(df_know, df_unknow, [f], {'FLAG': ['mean']})\n",
    "    return df_unknow\n",
    "df_stas_feat = None\n",
    "kf = StratifiedKFold(n_splits=5, random_state=2020, shuffle=True)\n",
    "for train_index, val_index in kf.split(df_train, df_train['FLAG']):\n",
    "    df_fold_train = df_train.iloc[train_index]\n",
    "    df_fold_val = df_train.iloc[val_index]\n",
    "    df_fold_val = statis_feat(df_fold_train, df_fold_val, cat_list)\n",
    "    df_stas_feat = pd.concat([df_stas_feat, df_fold_val], axis=0)\n",
    "    del (df_fold_train)\n",
    "    del (df_fold_val)\n",
    "    gc.collect()\n",
    "df_stas_feat_test = statis_feat(df_train, df_test, cat_list)\n",
    "df_train = pd.DataFrame(df_stas_feat)\n",
    "df_test = pd.DataFrame(df_stas_feat_test)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5757d5f4",
   "metadata": {},
   "source": [
    "### 2.2.4 模型训练\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "id": "74c6b181",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-12-11T09:12:55.674267Z",
     "iopub.status.busy": "2024-12-11T09:12:55.673731Z",
     "iopub.status.idle": "2024-12-11T09:18:24.944522Z",
     "msg_id": "1b97151f-4561-41b0-8577-fe50e41eeae2",
     "shell.execute_reply": "2024-12-11T09:18:24.943663Z",
     "shell.execute_reply.started": "2024-12-11T09:12:55.674239Z"
    },
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1920\n",
      "训练集维度：(60584, 1920)\n",
      "测试集维度：(6183, 1920)\n",
      "================5==============\n",
      "\n",
      "Fold_1 Training ================================\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/mole/.local/lib/python3.9/site-packages/torch/cuda/amp/grad_scaler.py:120: UserWarning: torch.cuda.amp.GradScaler is enabled, but CUDA is not available.  Disabling.\n",
      "  warnings.warn(\"torch.cuda.amp.GradScaler is enabled, but CUDA is not available.  Disabling.\")\n",
      "  0%|          | 0/43 [00:00<?, ?it/s]/home/mole/.local/lib/python3.9/site-packages/torch/amp/autocast_mode.py:204: UserWarning: User provided device_type of 'cuda', but CUDA is not available. Disabling\n",
      "  warnings.warn('User provided device_type of \\'cuda\\', but CUDA is not available. Disabling')\n",
      "100%|██████████| 43/43 [00:02<00:00, 15.66it/s, Epoch=1, LR=0.000999, Train_Loss=11.3]\n",
      "100%|██████████| 43/43 [00:02<00:00, 16.35it/s, Epoch=2, LR=0.000995, Train_Loss=5.6] \n",
      "100%|██████████| 43/43 [00:02<00:00, 15.93it/s, Epoch=3, LR=0.00099, Train_Loss=3.93] \n",
      "100%|██████████| 43/43 [00:02<00:00, 15.59it/s, Epoch=4, LR=0.000982, Train_Loss=3.46]\n",
      "100%|██████████| 43/43 [00:02<00:00, 15.91it/s, Epoch=5, LR=0.000972, Train_Loss=3.17]\n",
      "100%|██████████| 43/43 [00:02<00:00, 15.62it/s, Epoch=6, LR=0.00096, Train_Loss=2.98] \n",
      "100%|██████████| 43/43 [00:02<00:00, 15.49it/s, Epoch=7, LR=0.000946, Train_Loss=2.83]\n",
      "100%|██████████| 43/43 [00:02<00:00, 16.07it/s, Epoch=8, LR=0.000929, Train_Loss=2.7] \n",
      "100%|██████████| 43/43 [00:02<00:00, 15.71it/s, Epoch=9, LR=0.000911, Train_Loss=2.59]\n",
      "100%|██████████| 43/43 [00:02<00:00, 15.91it/s, Epoch=10, LR=0.000891, Train_Loss=2.49]\n",
      "100%|██████████| 43/43 [00:02<00:00, 15.61it/s, Epoch=11, LR=0.00087, Train_Loss=2.4]  \n",
      "100%|██████████| 43/43 [00:02<00:00, 15.74it/s, Epoch=12, LR=0.000846, Train_Loss=2.33]\n",
      "100%|██████████| 43/43 [00:02<00:00, 15.81it/s, Epoch=13, LR=0.000821, Train_Loss=2.26]\n",
      "100%|██████████| 43/43 [00:02<00:00, 16.10it/s, Epoch=14, LR=0.000795, Train_Loss=2.21]\n",
      "100%|██████████| 43/43 [00:02<00:00, 15.64it/s, Epoch=15, LR=0.000767, Train_Loss=2.16]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Training complete in 0h 0m 54s\n",
      "pred_val.shape:(12117,), pred_test.shape:(6183,)\n",
      "\n",
      "Fold_2 Training ================================\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/mole/.local/lib/python3.9/site-packages/torch/cuda/amp/grad_scaler.py:120: UserWarning: torch.cuda.amp.GradScaler is enabled, but CUDA is not available.  Disabling.\n",
      "  warnings.warn(\"torch.cuda.amp.GradScaler is enabled, but CUDA is not available.  Disabling.\")\n",
      "  0%|          | 0/43 [00:00<?, ?it/s]/home/mole/.local/lib/python3.9/site-packages/torch/amp/autocast_mode.py:204: UserWarning: User provided device_type of 'cuda', but CUDA is not available. Disabling\n",
      "  warnings.warn('User provided device_type of \\'cuda\\', but CUDA is not available. Disabling')\n",
      "100%|██████████| 43/43 [00:02<00:00, 15.47it/s, Epoch=1, LR=0.000999, Train_Loss=11.2]\n",
      "100%|██████████| 43/43 [00:02<00:00, 15.63it/s, Epoch=2, LR=0.000995, Train_Loss=5.59]\n",
      "100%|██████████| 43/43 [00:02<00:00, 16.00it/s, Epoch=3, LR=0.00099, Train_Loss=3.93] \n",
      "100%|██████████| 43/43 [00:02<00:00, 15.74it/s, Epoch=4, LR=0.000982, Train_Loss=3.45]\n",
      "100%|██████████| 43/43 [00:02<00:00, 16.11it/s, Epoch=5, LR=0.000972, Train_Loss=3.19]\n",
      "100%|██████████| 43/43 [00:02<00:00, 15.99it/s, Epoch=6, LR=0.00096, Train_Loss=3]    \n",
      "100%|██████████| 43/43 [00:02<00:00, 16.52it/s, Epoch=7, LR=0.000946, Train_Loss=2.85]\n",
      "100%|██████████| 43/43 [00:02<00:00, 15.72it/s, Epoch=8, LR=0.000929, Train_Loss=2.71]\n",
      "100%|██████████| 43/43 [00:02<00:00, 15.84it/s, Epoch=9, LR=0.000911, Train_Loss=2.6] \n",
      "100%|██████████| 43/43 [00:02<00:00, 16.21it/s, Epoch=10, LR=0.000891, Train_Loss=2.5] \n",
      "100%|██████████| 43/43 [00:02<00:00, 15.81it/s, Epoch=11, LR=0.00087, Train_Loss=2.41] \n",
      "100%|██████████| 43/43 [00:02<00:00, 15.76it/s, Epoch=12, LR=0.000846, Train_Loss=2.34]\n",
      "100%|██████████| 43/43 [00:02<00:00, 15.83it/s, Epoch=13, LR=0.000821, Train_Loss=2.28]\n",
      "100%|██████████| 43/43 [00:02<00:00, 15.68it/s, Epoch=14, LR=0.000795, Train_Loss=2.22]\n",
      "100%|██████████| 43/43 [00:02<00:00, 15.64it/s, Epoch=15, LR=0.000767, Train_Loss=2.18]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Training complete in 0h 0m 54s\n",
      "pred_val.shape:(12117,), pred_test.shape:(6183,)\n",
      "\n",
      "Fold_3 Training ================================\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/mole/.local/lib/python3.9/site-packages/torch/cuda/amp/grad_scaler.py:120: UserWarning: torch.cuda.amp.GradScaler is enabled, but CUDA is not available.  Disabling.\n",
      "  warnings.warn(\"torch.cuda.amp.GradScaler is enabled, but CUDA is not available.  Disabling.\")\n",
      "  0%|          | 0/43 [00:00<?, ?it/s]/home/mole/.local/lib/python3.9/site-packages/torch/amp/autocast_mode.py:204: UserWarning: User provided device_type of 'cuda', but CUDA is not available. Disabling\n",
      "  warnings.warn('User provided device_type of \\'cuda\\', but CUDA is not available. Disabling')\n",
      "100%|██████████| 43/43 [00:02<00:00, 15.62it/s, Epoch=1, LR=0.000999, Train_Loss=11.3]\n",
      "100%|██████████| 43/43 [00:02<00:00, 15.57it/s, Epoch=2, LR=0.000995, Train_Loss=5.51]\n",
      "100%|██████████| 43/43 [00:02<00:00, 15.83it/s, Epoch=3, LR=0.00099, Train_Loss=3.91] \n",
      "100%|██████████| 43/43 [00:02<00:00, 16.22it/s, Epoch=4, LR=0.000982, Train_Loss=3.46]\n",
      "100%|██████████| 43/43 [00:02<00:00, 15.63it/s, Epoch=5, LR=0.000972, Train_Loss=3.19]\n",
      "100%|██████████| 43/43 [00:02<00:00, 15.58it/s, Epoch=6, LR=0.00096, Train_Loss=3.01] \n",
      "100%|██████████| 43/43 [00:02<00:00, 16.43it/s, Epoch=7, LR=0.000946, Train_Loss=2.85]\n",
      "100%|██████████| 43/43 [00:02<00:00, 15.66it/s, Epoch=8, LR=0.000929, Train_Loss=2.72]\n",
      "100%|██████████| 43/43 [00:02<00:00, 16.27it/s, Epoch=9, LR=0.000911, Train_Loss=2.6] \n",
      "100%|██████████| 43/43 [00:02<00:00, 16.08it/s, Epoch=10, LR=0.000891, Train_Loss=2.49]\n",
      "100%|██████████| 43/43 [00:02<00:00, 15.77it/s, Epoch=11, LR=0.00087, Train_Loss=2.4]  \n",
      "100%|██████████| 43/43 [00:02<00:00, 15.72it/s, Epoch=12, LR=0.000846, Train_Loss=2.33]\n",
      "100%|██████████| 43/43 [00:02<00:00, 16.02it/s, Epoch=13, LR=0.000821, Train_Loss=2.27]\n",
      "100%|██████████| 43/43 [00:02<00:00, 15.92it/s, Epoch=14, LR=0.000795, Train_Loss=2.22]\n",
      "100%|██████████| 43/43 [00:02<00:00, 15.73it/s, Epoch=15, LR=0.000767, Train_Loss=2.17]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Training complete in 0h 0m 54s\n",
      "pred_val.shape:(12117,), pred_test.shape:(6183,)\n",
      "\n",
      "Fold_4 Training ================================\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/mole/.local/lib/python3.9/site-packages/torch/cuda/amp/grad_scaler.py:120: UserWarning: torch.cuda.amp.GradScaler is enabled, but CUDA is not available.  Disabling.\n",
      "  warnings.warn(\"torch.cuda.amp.GradScaler is enabled, but CUDA is not available.  Disabling.\")\n",
      "  0%|          | 0/43 [00:00<?, ?it/s]/home/mole/.local/lib/python3.9/site-packages/torch/amp/autocast_mode.py:204: UserWarning: User provided device_type of 'cuda', but CUDA is not available. Disabling\n",
      "  warnings.warn('User provided device_type of \\'cuda\\', but CUDA is not available. Disabling')\n",
      "100%|██████████| 43/43 [00:02<00:00, 15.87it/s, Epoch=1, LR=0.000999, Train_Loss=11.2]\n",
      "100%|██████████| 43/43 [00:02<00:00, 15.91it/s, Epoch=2, LR=0.000995, Train_Loss=5.47]\n",
      "100%|██████████| 43/43 [00:02<00:00, 16.49it/s, Epoch=3, LR=0.00099, Train_Loss=3.9]  \n",
      "100%|██████████| 43/43 [00:02<00:00, 15.77it/s, Epoch=4, LR=0.000982, Train_Loss=3.43]\n",
      "100%|██████████| 43/43 [00:02<00:00, 15.68it/s, Epoch=5, LR=0.000972, Train_Loss=3.16]\n",
      "100%|██████████| 43/43 [00:02<00:00, 15.80it/s, Epoch=6, LR=0.00096, Train_Loss=2.98] \n",
      "100%|██████████| 43/43 [00:02<00:00, 15.74it/s, Epoch=7, LR=0.000946, Train_Loss=2.84]\n",
      "100%|██████████| 43/43 [00:02<00:00, 15.83it/s, Epoch=8, LR=0.000929, Train_Loss=2.71]\n",
      "100%|██████████| 43/43 [00:02<00:00, 15.70it/s, Epoch=9, LR=0.000911, Train_Loss=2.59]\n",
      "100%|██████████| 43/43 [00:02<00:00, 15.75it/s, Epoch=10, LR=0.000891, Train_Loss=2.49]\n",
      "100%|██████████| 43/43 [00:02<00:00, 16.43it/s, Epoch=11, LR=0.00087, Train_Loss=2.4]  \n",
      "100%|██████████| 43/43 [00:02<00:00, 16.28it/s, Epoch=12, LR=0.000846, Train_Loss=2.33]\n",
      "100%|██████████| 43/43 [00:02<00:00, 15.56it/s, Epoch=13, LR=0.000821, Train_Loss=2.27]\n",
      "100%|██████████| 43/43 [00:02<00:00, 15.50it/s, Epoch=14, LR=0.000795, Train_Loss=2.22]\n",
      "100%|██████████| 43/43 [00:02<00:00, 15.75it/s, Epoch=15, LR=0.000767, Train_Loss=2.17]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Training complete in 0h 0m 54s\n",
      "pred_val.shape:(12117,), pred_test.shape:(6183,)\n",
      "\n",
      "Fold_5 Training ================================\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/mole/.local/lib/python3.9/site-packages/torch/cuda/amp/grad_scaler.py:120: UserWarning: torch.cuda.amp.GradScaler is enabled, but CUDA is not available.  Disabling.\n",
      "  warnings.warn(\"torch.cuda.amp.GradScaler is enabled, but CUDA is not available.  Disabling.\")\n",
      "  0%|          | 0/43 [00:00<?, ?it/s]/home/mole/.local/lib/python3.9/site-packages/torch/amp/autocast_mode.py:204: UserWarning: User provided device_type of 'cuda', but CUDA is not available. Disabling\n",
      "  warnings.warn('User provided device_type of \\'cuda\\', but CUDA is not available. Disabling')\n",
      "100%|██████████| 43/43 [00:02<00:00, 15.81it/s, Epoch=1, LR=0.000999, Train_Loss=11.3]\n",
      "100%|██████████| 43/43 [00:02<00:00, 15.35it/s, Epoch=2, LR=0.000995, Train_Loss=5.66]\n",
      "100%|██████████| 43/43 [00:02<00:00, 15.83it/s, Epoch=3, LR=0.00099, Train_Loss=3.9]  \n",
      "100%|██████████| 43/43 [00:02<00:00, 15.55it/s, Epoch=4, LR=0.000982, Train_Loss=3.42]\n",
      "100%|██████████| 43/43 [00:02<00:00, 16.03it/s, Epoch=5, LR=0.000972, Train_Loss=3.16]\n",
      "100%|██████████| 43/43 [00:02<00:00, 15.31it/s, Epoch=6, LR=0.00096, Train_Loss=2.99] \n",
      "100%|██████████| 43/43 [00:02<00:00, 15.63it/s, Epoch=7, LR=0.000946, Train_Loss=2.84]\n",
      "100%|██████████| 43/43 [00:02<00:00, 15.64it/s, Epoch=8, LR=0.000929, Train_Loss=2.7] \n",
      "100%|██████████| 43/43 [00:02<00:00, 15.85it/s, Epoch=9, LR=0.000911, Train_Loss=2.59]\n",
      "100%|██████████| 43/43 [00:02<00:00, 16.38it/s, Epoch=10, LR=0.000891, Train_Loss=2.48]\n",
      "100%|██████████| 43/43 [00:02<00:00, 15.60it/s, Epoch=11, LR=0.00087, Train_Loss=2.4]  \n",
      "100%|██████████| 43/43 [00:02<00:00, 17.00it/s, Epoch=12, LR=0.000846, Train_Loss=2.33]\n",
      "100%|██████████| 43/43 [00:02<00:00, 15.41it/s, Epoch=13, LR=0.000821, Train_Loss=2.26]\n",
      "100%|██████████| 43/43 [00:02<00:00, 15.52it/s, Epoch=14, LR=0.000795, Train_Loss=2.21]\n",
      "100%|██████████| 43/43 [00:02<00:00, 15.61it/s, Epoch=15, LR=0.000767, Train_Loss=2.16]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Training complete in 0h 0m 54s\n",
      "pred_val.shape:(12116,), pred_test.shape:(6183,)\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/tmp/ipykernel_1681/2707540749.py:239: RuntimeWarning: invalid value encountered in true_divide\n",
      "  f1_scores = (precisions * recalls) / (precisions + recalls)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "train's precision: 0.13967423690657485\n",
      "train's recall: 0.6656674029662354\n",
      "train's auc: 0.6224872527984462\n",
      "train's ks: 0.18756387736444197\n",
      "train's F1: 0.23089973730297722\n",
      "train's F2: 0.11544986865148861\n",
      "最佳阈值:  0.900325326971204\n",
      "打印分类报告: \n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "         0.0       0.93      0.52      0.67     54246\n",
      "         1.0       0.14      0.67      0.23      6338\n",
      "\n",
      "    accuracy                           0.54     60584\n",
      "   macro avg       0.53      0.59      0.45     60584\n",
      "weighted avg       0.85      0.54      0.62     60584\n",
      "\n"
     ]
    }
   ],
   "source": [
    "import time\n",
    "import random\n",
    "import torch\n",
    "import torch.nn as nn\n",
    "import torch.nn.functional as F\n",
    "import torch.optim as optim\n",
    "from torch.optim import lr_scheduler\n",
    "from torch.utils.data import DataLoader, Dataset\n",
    "from torch.cuda import amp\n",
    "from sklearn.preprocessing import QuantileTransformer\n",
    "\n",
    "CONFIG = {\n",
    "    \"seed\": 8,\n",
    "    \"epochs\": 15,\n",
    "    \"train_batch_size\": 1024,\n",
    "    \"learning_rate\": 1e-3,\n",
    "    \"T_max\": 2000,\n",
    "    \"min_lr\": 1e-5,\n",
    "    \"cat_weight\": 1./3,\n",
    "    \"cont_weight\": 2./3,\n",
    "    \"device\": torch.device(\"cuda:0\" if torch.cuda.is_available() else \"cpu\")\n",
    "}\n",
    "\n",
    "def sigmoid(x):\n",
    "    return 1.0 / (1+np.exp(-x))\n",
    "\n",
    "def set_seed(seed = 42):\n",
    "    '''Sets the seed of the entire notebook so results are the same every time we run.\n",
    "    This is for REPRODUCIBILITY.'''\n",
    "    random.seed(42)\n",
    "    np.random.seed(42)\n",
    "    torch.manual_seed(seed)\n",
    "    torch.cuda.manual_seed(seed)\n",
    "    # When running on the CuDNN backend, two further options must be set\n",
    "    torch.backends.cudnn.deterministic = True\n",
    "    torch.backends.cudnn.benchmark = False\n",
    "    # Set a fixed value for the hash seed\n",
    "    os.environ['PYTHONHASHSEED'] = str(seed)\n",
    "\n",
    "\n",
    "class TPSDecDataset(Dataset):\n",
    "    def __init__(self, df):\n",
    "        self.df = df\n",
    "        self.features = df\n",
    "\n",
    "    def __len__(self):\n",
    "        return len(self.df)\n",
    "    \n",
    "    def __getitem__(self, index):\n",
    "        X_cont = self.features[index]\n",
    "        return X_cont\n",
    "\n",
    "class DenoisingAutoEncoder(nn.Module):\n",
    "    def __init__(self):\n",
    "        super(DenoisingAutoEncoder, self).__init__()\n",
    "        self.encoder = nn.Sequential(\n",
    "            nn.Linear(X_test.shape[1], 100),  # X_test.shape[1]\n",
    "            \n",
    "            nn.BatchNorm1d(100),\n",
    "            nn.ReLU(),\n",
    "            nn.Linear(100, 200)\n",
    "        )\n",
    "        self.decoder = nn.Sequential(\n",
    "            nn.Linear(200, 100),\n",
    "            nn.BatchNorm1d(100),\n",
    "            nn.ReLU(),\n",
    "        )\n",
    "        self.decoder_cont_head = nn.Linear(100, X_test.shape[1])  # X_test.shape[1]\n",
    "        \n",
    "    def extract(self, x):\n",
    "        features = self.encoder(x)\n",
    "        return features\n",
    "        \n",
    "    def forward(self, x):\n",
    "        features = self.encoder(x)\n",
    "        output = self.decoder(F.relu(features))\n",
    "        cont_output = self.decoder_cont_head(output)\n",
    "        \n",
    "        return cont_output\n",
    "\n",
    "def cat_criterion(cat_outputs, cat_targets):\n",
    "    return nn.BCEWithLogitsLoss()(cat_outputs, cat_targets)\n",
    "\n",
    "def cont_criterion(cont_outputs, cont_targets):\n",
    "    return nn.MSELoss()(cont_outputs.view(-1), cont_targets.view(-1))\n",
    "\n",
    "def add_swap_noise(X, ratio=.15, return_mask=False):\n",
    "    obfuscation_mask = torch.bernoulli(ratio * torch.ones(X.shape)).to(X.device)\n",
    "    obfuscated_X = torch.where(obfuscation_mask == 1, X[torch.randperm(X.shape[0])], X)\n",
    "    if return_mask:\n",
    "        return obfuscated_X, obfuscation_mask\n",
    "    return obfuscated_X\n",
    "\n",
    "def train_one_epoch(model, optimizer, scheduler, dataloader, device, epoch):\n",
    "    model.train()\n",
    "    scaler = amp.GradScaler()\n",
    "    dataset_size = 0\n",
    "    running_loss = 0.0\n",
    "    bar = tqdm(enumerate(dataloader), total=len(dataloader))\n",
    "    for step, X_cont in bar:         \n",
    "        X_cont = X_cont.to(device, dtype=torch.float)\n",
    "        batch_size = X_cont.size(0)\n",
    "        X_cont_noise = add_swap_noise(X_cont)\n",
    "        X_cont_noise = X_cont_noise.to(device, dtype=torch.float)\n",
    "        \n",
    "        with amp.autocast(enabled=True):\n",
    "            cont_outputs = model(X_cont_noise)\n",
    "            cont_loss = cont_criterion(cont_outputs, X_cont)\n",
    "            loss = cont_loss\n",
    "        \n",
    "        scaler.scale(loss).backward()\n",
    "        scaler.step(optimizer)\n",
    "        scaler.update()\n",
    "\n",
    "        # zero the parameter gradients\n",
    "        optimizer.zero_grad()\n",
    "        if scheduler is not None:\n",
    "            scheduler.step()\n",
    "                \n",
    "        running_loss += (loss.item() * batch_size)\n",
    "        dataset_size += batch_size\n",
    "        epoch_loss = running_loss / dataset_size\n",
    "        bar.set_postfix(Epoch=epoch, Train_Loss=epoch_loss,\n",
    "                        LR=optimizer.param_groups[0]['lr'])\n",
    "    gc.collect()\n",
    "    \n",
    "    return epoch_loss\n",
    "\n",
    "def run_training(model, optimizer, scheduler, train_loader, device, num_epochs):\n",
    "    # To automatically log gradients\n",
    "    if torch.cuda.is_available():\n",
    "        print(\"[INFO] Using GPU: {}\\n\".format(torch.cuda.get_device_name()))\n",
    "    \n",
    "    start = time.time()\n",
    "    for epoch in range(1, num_epochs + 1):\n",
    "        train_epoch_loss = train_one_epoch(model, optimizer, scheduler, \n",
    "                                           train_loader, device, epoch)\n",
    "    end = time.time()\n",
    "    time_elapsed = end - start\n",
    "    print('Training complete in {:.0f}h {:.0f}m {:.0f}s'.format(\n",
    "        time_elapsed // 3600, (time_elapsed % 3600) // 60, (time_elapsed % 3600) % 60))\n",
    "    # torch.save(model.state_dict(), 'model_1111_skf.bin') HACK\n",
    "    \n",
    "    return model\n",
    "\n",
    "def infer(model, dataloader, device):\n",
    "    model.eval()  # 设置模型为评估模式\n",
    "    all_cont_preds = []\n",
    "    with torch.no_grad():  # 禁用梯度计算，减少内存使用\n",
    "        for X_cont in dataloader:\n",
    "            X_cont = X_cont.to(device, dtype=torch.float)\n",
    "            cont_preds = model(X_cont)  # 获取预测结果\n",
    "            all_cont_preds.append(cont_preds.cpu().numpy())\n",
    "    # 将所有预测结果拼接起来\n",
    "    cont_pred = np.concatenate(all_cont_preds, axis=0)\n",
    "    return cont_pred\n",
    "\n",
    "from sklearn.preprocessing import MinMaxScaler, StandardScaler\n",
    "\n",
    "# 预删除特征 \n",
    "drop_cols = [\n",
    "    'CUST_NO', 'FLAG', 'is_test', 'entinfo_basic_info_INDS_CD_truncated' \n",
    "]\n",
    "feature_name = [i for i in df_train.columns if i not in drop_cols]\n",
    "X_train = df_train[feature_name].reset_index(drop=True)\n",
    "X_test = df_test[feature_name].reset_index(drop=True)\n",
    "y = df_train['FLAG'].reset_index(drop=True)\n",
    "print(len(feature_name))\n",
    "print(\"训练集维度：{}\".format(X_train.shape))\n",
    "print(\"测试集维度：{}\".format(X_test.shape))\n",
    "\n",
    "X_train = pd.DataFrame(X_train).replace([np.inf, -np.inf], np.nan).fillna(0)\n",
    "X_test = pd.DataFrame(X_test).replace([np.inf, -np.inf], np.nan).fillna(0)\n",
    "qut_test = X_test.copy()\n",
    "qut_train_all = X_train.copy()\n",
    "qt = QuantileTransformer(output_distribution='normal', random_state=2020)\n",
    "qut_train_all = qt.fit_transform(qut_train_all)\n",
    "qut_test = qt.transform(qut_test)\n",
    "\n",
    "folds = 5\n",
    "seeds = [5]    \n",
    "oof = np.zeros(df_train.shape[0])\n",
    "prediction = np.zeros(df_test.shape[0])\n",
    "\n",
    "for seed in seeds:    \n",
    "    print(\"================{}==============\".format(seed))\n",
    "    skf = StratifiedKFold(n_splits=folds, random_state=seed, shuffle=True)\n",
    "    for index, (trn_idx, val_idx) in enumerate(skf.split(qut_train_all, y)):\n",
    "        print('\\nFold_{} Training ================================\\n'.format(index + 1))\n",
    "        \n",
    "        # model\n",
    "        set_seed(CONFIG[\"seed\"])\n",
    "        model = DenoisingAutoEncoder()\n",
    "        model.to(CONFIG['device'])\n",
    "         \n",
    "        # dataloader\n",
    "        train_dataset = TPSDecDataset(qut_train_all[trn_idx][y[trn_idx]==0])\n",
    "        train_loader = DataLoader(train_dataset, batch_size=CONFIG['train_batch_size'], \n",
    "                                  num_workers=2, shuffle=True, pin_memory=True)\n",
    "        val_dataset = TPSDecDataset(qut_train_all[val_idx])\n",
    "        val_loader = DataLoader(val_dataset, batch_size=CONFIG['train_batch_size'], \n",
    "                                  num_workers=2, shuffle=False, pin_memory=True, drop_last=False)\n",
    "        test_dataset = TPSDecDataset(qut_test)\n",
    "        test_loader = DataLoader(test_dataset, batch_size=CONFIG['train_batch_size'], \n",
    "                                  num_workers=2, shuffle=False, pin_memory=True, drop_last=False)\n",
    "\n",
    "        # train\n",
    "        optimizer = optim.Adam(model.parameters(), lr=CONFIG['learning_rate'])\n",
    "        scheduler = lr_scheduler.CosineAnnealingLR(optimizer, T_max=CONFIG['T_max'], eta_min=CONFIG['min_lr'])\n",
    "        model = run_training(model, optimizer, scheduler, train_loader,\n",
    "                             device=CONFIG['device'], \n",
    "                             num_epochs=CONFIG['epochs'])\n",
    "        \n",
    "        # infer\n",
    "        mse_loss = nn.MSELoss(reduction='none')\n",
    "        rec_val = infer(model, val_loader, CONFIG['device'])\n",
    "        rec_test = infer(model, test_loader, CONFIG['device'])\n",
    "        val_loss = mse_loss(torch.tensor(rec_val), torch.tensor(qut_train_all[val_idx])).mean(dim=1).reshape(-1, 1)\n",
    "        test_loss = mse_loss(torch.tensor(rec_test), torch.tensor(qut_test)).mean(dim=1).reshape(-1, 1)\n",
    "        pred_val = sigmoid(val_loss[:, 0].numpy())\n",
    "        pred_test = sigmoid(test_loss[:, 0].numpy())\n",
    "        print('pred_val.shape:{}, pred_test.shape:{}'.format(pred_val.shape, pred_test.shape))\n",
    "    \n",
    "        # prediction, oof\n",
    "        oof[val_idx] += pred_val\n",
    "        prediction += pred_test\n",
    "\n",
    "        del model, optimizer, scheduler, pred_val, pred_test, train_dataset, train_loader, val_dataset, val_loader, test_dataset, test_loader\n",
    "        gc.collect()\n",
    "        \n",
    "prediction = prediction / (folds*len(seeds))\n",
    "oof = oof / len(seeds)\n",
    "\n",
    "from sklearn.metrics import classification_report, precision_score, recall_score, f1_score, precision_recall_curve,  roc_curve, auc\n",
    "\n",
    "def do_metrics(y_true, y_pred):\n",
    "    precisions, recalls, thresholds = precision_recall_curve(y_true, y_pred)\n",
    "    \n",
    "    f1_scores = (precisions * recalls) / (precisions + recalls)\n",
    "    best_t = thresholds[np.argmax(f1_scores[np.isfinite(f1_scores)])]  # 寻找最佳阈值\n",
    "    \n",
    "    y_1 = [1 if x >= best_t else 0 for x in y_pred]\n",
    "    clf_report1 = classification_report(y_true.values, y_1)\n",
    "    curr_f1score = f1_score(y_true, y_1)\n",
    "    recall = recall_score(y_true, y_1)\n",
    "    precision = precision_score(y_true, y_1)\n",
    "    F_score = (precision * recall) / (precision + recall)\n",
    "    fpr, tpr ,th = roc_curve(y_true, y_pred)\n",
    "\n",
    "    print(f\"train's precision: {precision}\")\n",
    "    print(f\"train's recall: {recall}\")\n",
    "\n",
    "    print(f\"train's auc: {auc(fpr,tpr)}\")\n",
    "    print(f\"train's ks: {max(tpr-fpr)}\")\n",
    "    print(f\"train's F1: {curr_f1score}\")\n",
    "    print(f\"train's F2: {F_score}\")\n",
    "    print(f\"最佳阈值:  {str(best_t)}\")\n",
    "    print('打印分类报告: ')\n",
    "    print(clf_report1)\n",
    "\n",
    "    return best_t, curr_f1score, F_score\n",
    "\n",
    "best_t, curr_f1score, F_score = do_metrics(y, oof)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "id": "949b6965",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-12-11T09:18:24.946068Z",
     "iopub.status.busy": "2024-12-11T09:18:24.945679Z",
     "iopub.status.idle": "2024-12-11T09:18:24.987783Z",
     "msg_id": "d9166b63-c102-4ba9-bf16-dac155a35137",
     "shell.execute_reply": "2024-12-11T09:18:24.987131Z",
     "shell.execute_reply.started": "2024-12-11T09:18:24.946040Z"
    }
   },
   "outputs": [],
   "source": [
    "pkl_name = './feature/20241108_atec_1920_skf_B.pkl'\n",
    "if os.path.exists(pkl_name):\n",
    "    with open(pkl_name, 'rb') as f:\n",
    "        atc_train, atc_test = pickle.load(f)\n",
    "else:\n",
    "    # 保存特征\n",
    "    with open(pkl_name, 'wb') as f:\n",
    "        atc_train = pd.DataFrame({'CUST_NO': df_train['CUST_NO'], 'ATC_feat': oof})\n",
    "        atc_test = pd.DataFrame({'CUST_NO': df_test['CUST_NO'], 'ATC_feat': prediction})\n",
    "        pickle.dump([atc_train, atc_test], f)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "77f07a4b",
   "metadata": {},
   "source": [
    "## 2.3 lgb\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6fbf86e3",
   "metadata": {},
   "source": [
    "### 2.3.1 特征合并\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "id": "1d49e541",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-12-11T09:18:24.989192Z",
     "iopub.status.busy": "2024-12-11T09:18:24.988929Z",
     "iopub.status.idle": "2024-12-11T09:18:51.139915Z",
     "msg_id": "193af15e-7453-4227-a2e0-91e2992dcde1",
     "shell.execute_reply": "2024-12-11T09:18:51.139149Z",
     "shell.execute_reply.started": "2024-12-11T09:18:24.989167Z"
    }
   },
   "outputs": [],
   "source": [
    "df_train = target_train.merge(nature_train, on='CUST_NO', how='left')\n",
    "df_train = df_train.merge(asset_train, on='CUST_NO', how='left')\n",
    "df_train = df_train.merge(prod_hold_train, on='CUST_NO', how='left')\n",
    "df_train = df_train.merge(entinfo_basic_info_feature_train, on='CUST_NO', how='left')\n",
    "df_train = df_train.merge(tr_ibtf_train, on='CUST_NO', how='left')\n",
    "df_train = df_train.merge(tr_tpay_train, on='CUST_NO', how='left')\n",
    "df_train = df_train.merge(aps_feature_train, on='CUST_NO', how='left')\n",
    "df_train = df_train.merge(mb_feature_train, on='CUST_NO', how='left')\n",
    "df_train = df_train.merge(mb_join_op_feature_train, on='CUST_NO', how='left')\n",
    "df_train = df_train.merge(mb_embed_month_1, on='CUST_NO', how='left')\n",
    "df_train = df_train.merge(mb_embed_month_2, on='CUST_NO', how='left')\n",
    "df_train = df_train.merge(mb_embed_month_3, on='CUST_NO', how='left')\n",
    "df_train = df_train.merge(mb_model_embed_month_1, on='CUST_NO', how='left')\n",
    "df_train = df_train.merge(mb_model_embed_month_2, on='CUST_NO', how='left')\n",
    "df_train = df_train.merge(mb_model_embed_month_3, on='CUST_NO', how='left')\n",
    "df_train = df_train.merge(merch_tr_feature_train, on='CUST_NO', how='left')\n",
    "df_train = df_train.merge(mb_join_op_unique_feature_train, on='CUST_NO', how='left')\n",
    "df_train = df_train.merge(atc_train, on='CUST_NO', how='left')\n",
    "\n",
    "df_test = target_test_b.merge(nature_test_b, on='CUST_NO', how='left')\n",
    "df_test = df_test.merge(asset_test_b, on='CUST_NO', how='left')\n",
    "df_test = df_test.merge(prod_hold_test_b, on='CUST_NO', how='left')\n",
    "df_test = df_test.merge(entinfo_basic_info_feature_test, on='CUST_NO', how='left')\n",
    "df_test = df_test.merge(tr_ibtf_test_b, on='CUST_NO', how='left')\n",
    "df_test = df_test.merge(tr_tpay_test_b, on='CUST_NO', how='left')\n",
    "df_test = df_test.merge(aps_feature_test, on='CUST_NO', how='left')\n",
    "df_test = df_test.merge(mb_feature_test, on='CUST_NO', how='left')\n",
    "df_test = df_test.merge(mb_join_op_feature_test, on='CUST_NO', how='left')\n",
    "df_test = df_test.merge(mb_embed_month_1, on='CUST_NO', how='left')\n",
    "df_test = df_test.merge(mb_embed_month_2, on='CUST_NO', how='left')\n",
    "df_test = df_test.merge(mb_embed_month_3, on='CUST_NO', how='left')\n",
    "df_test = df_test.merge(mb_model_embed_month_1, on='CUST_NO', how='left')\n",
    "df_test = df_test.merge(mb_model_embed_month_2, on='CUST_NO', how='left')\n",
    "df_test = df_test.merge(mb_model_embed_month_3, on='CUST_NO', how='left')\n",
    "df_test = df_test.merge(merch_tr_feature_test, on='CUST_NO', how='left')\n",
    "df_test = df_test.merge(mb_join_op_unique_feature_test, on='CUST_NO', how='left')\n",
    "df_test = df_test.merge(atc_test, on='CUST_NO', how='left')\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d561be35",
   "metadata": {},
   "source": [
    "### 2.3.2 特征筛选\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "id": "d56f20e8",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-12-11T09:18:51.141730Z",
     "iopub.status.busy": "2024-12-11T09:18:51.141164Z",
     "iopub.status.idle": "2024-12-11T09:19:12.591242Z",
     "msg_id": "8b1f7852-d2c6-4c96-bf55-cea463c5b93c",
     "shell.execute_reply": "2024-12-11T09:19:12.590525Z",
     "shell.execute_reply.started": "2024-12-11T09:18:51.141701Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "剔除高占空比特征前： (60584, 2643)\n",
      "剔除高占空比特征后： (60584, 1958)\n",
      "剔除高占空比特征前： (6183, 2446)\n",
      "剔除高占空比特征后： (6183, 1949)\n",
      "训练测试集特征取交后： (6183, 1926)\n",
      "['DATA_DAT_x', 'nature_DATA_DAT', 'asset_DATA_DAT', 'prod_hold_DATA_DAT', 'entinfo_basic_info_REGPROVIN_CD_esdyearsmin', 'DATA_DAT_y']\n",
      "剔除单一值特征特征后： (6183, 1920)\n",
      "训练测试集分布不一致特征： ['aps_CUST_NO_APSDTRCHL_CUST_NO_count_55c135066d677b567f25a706ce5b3cc5_in', 'aps_CUST_NO_APSDTRCHL_CUST_NO_count_7dcdd7724d3ac7a03ea565c65d8376e3_in', 'aps_CUST_NO_APSDTRCHL_CUST_NO_count_55c135066d677b567f25a706ce5b3cc5_div_tr_freq_in', 'aps_CUST_NO_APSDTRCHL_CUST_NO_count_7dcdd7724d3ac7a03ea565c65d8376e3_div_tr_freq_in', 'aps_CUST_NO_APSDTRCHL_CUST_NO_count_9b9e2ea4b767c480f06e6c7d70da7a60_out', 'aps_CUST_NO_APSDTRCHL_CUST_NO_count_9b9e2ea4b767c480f06e6c7d70da7a60_div_tr_freq_out', 'CUST_NO_merch_tr_dtl_COD_TR_CUST_NO_count_1ffdcf402e5ecf00405b19db93c0a37a', 'CUST_NO_merch_tr_dtl_COD_TR_CUST_NO_count_2f1a1ec13092261011ae4d8d1ab00389']\n",
      "剔除分布异常特征特征后： (6183, 1920)\n"
     ]
    }
   ],
   "source": [
    "''' 特征筛选 '''\n",
    "# 剔除缺失值占比超过0.98的特征（NOTE: 重要！训练/测试分开剔除）\n",
    "def stat_df(df):\n",
    "    stats = []\n",
    "    for col in df.columns:\n",
    "        stats.append((col, df[col].nunique(),df[col].isnull().sum()*100/df.shape[0],\n",
    "                     df[col].value_counts(normalize=True,dropna=False).values[0]*100,df[col].dtype))\n",
    "    stats_df = pd.DataFrame(stats, columns=['特征','唯一数数量','缺失值占比','最多数占比','类型'])\n",
    "    stats_df.sort_values('缺失值占比',ascending=False)\n",
    "    return stats_df\n",
    "\n",
    "def del_nan_col(feature):\n",
    "    print(\"剔除高占空比特征前：\", feature.shape)\n",
    "    feature_res = stat_df(feature)\n",
    "    feature_res = feature_res[feature_res['缺失值占比'] <= 98]\n",
    "    feature_names_res = [col for col in feature.columns if col in list(feature_res['特征'])]\n",
    "    feature = feature[feature_names_res]\n",
    "    print(\"剔除高占空比特征后：\", feature.shape)\n",
    "    \n",
    "    return feature \n",
    "\n",
    "df_train = del_nan_col(df_train)\n",
    "df_test = del_nan_col(df_test)\n",
    "\n",
    "# 取特征交集\n",
    "df_test = df_test[[col for col in df_test.columns if col in df_train.columns]]\n",
    "print(\"训练测试集特征取交后：\", df_test.shape)\n",
    "\n",
    "# 剔除单一值特征\n",
    "def search_single (df):\n",
    "    features = []\n",
    "    numerical_feature = list(df.select_dtypes(exclude=['object']).columns)\n",
    "    object_feature = list(df.select_dtypes(include=['object']).columns)\n",
    "    unique_feature = []\n",
    "    other_feature = []\n",
    "    for feature in numerical_feature:\n",
    "        temp = df[feature].nunique()\n",
    "        if temp == 1:\n",
    "            unique_feature.append(feature)\n",
    "        else:\n",
    "            other_feature.append(feature)\n",
    "    features.append(unique_feature)\n",
    "    features.append(other_feature)\n",
    "    features.append(object_feature)\n",
    "    return features\n",
    "unique_cols = search_single(df_train)[0]\n",
    "print(unique_cols)\n",
    "df_train = df_train[[i for i in df_train.columns if i not in unique_cols]]\n",
    "df_test = df_test[[i for i in df_test.columns if i not in unique_cols]]\n",
    "print(\"剔除单一值特征特征后：\", df_test.shape)\n",
    "\n",
    "# 剔除训练测试集差异大的特征\n",
    "drop_adval_cols = ['aps_CUST_NO_APSDTRCHL_CUST_NO_count_55c135066d677b567f25a706ce5b3cc5_in', 'aps_CUST_NO_APSDTRCHL_CUST_NO_count_7dcdd7724d3ac7a03ea565c65d8376e3_in', 'aps_CUST_NO_APSDTRCHL_CUST_NO_count_55c135066d677b567f25a706ce5b3cc5_div_tr_freq_in', 'aps_CUST_NO_APSDTRCHL_CUST_NO_count_7dcdd7724d3ac7a03ea565c65d8376e3_div_tr_freq_in', 'aps_CUST_NO_APSDTRCHL_CUST_NO_count_9b9e2ea4b767c480f06e6c7d70da7a60_out', 'aps_CUST_NO_APSDTRCHL_CUST_NO_count_9b9e2ea4b767c480f06e6c7d70da7a60_div_tr_freq_out', 'CUST_NO_merch_tr_dtl_COD_TR_CUST_NO_count_1ffdcf402e5ecf00405b19db93c0a37a', 'CUST_NO_merch_tr_dtl_COD_TR_CUST_NO_count_2f1a1ec13092261011ae4d8d1ab00389']\n",
    "print(\"训练测试集分布不一致特征：\", drop_adval_cols)\n",
    "df_train = df_train[[i for i in df_train.columns if i not in drop_adval_cols]]\n",
    "df_test = df_test[[i for i in df_test.columns if i not in drop_adval_cols]]\n",
    "print(\"剔除分布异常特征特征后：\", df_test.shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "eb07824b",
   "metadata": {},
   "source": [
    "### 2.3.3 类别特征编码\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "id": "ee8f9cbf",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-12-11T09:19:12.592639Z",
     "iopub.status.busy": "2024-12-11T09:19:12.592283Z",
     "iopub.status.idle": "2024-12-11T09:19:20.590603Z",
     "msg_id": "088b3a1c-2785-4562-9725-e8260e896ee6",
     "shell.execute_reply": "2024-12-11T09:19:20.589822Z",
     "shell.execute_reply.started": "2024-12-11T09:19:12.592612Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "合并： (66767, 1944)\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 4/4 [00:00<00:00, 77.19it/s]\n"
     ]
    }
   ],
   "source": [
    "''' 类别特征编码 '''\n",
    "from sklearn.preprocessing import OneHotEncoder\n",
    "from sklearn.model_selection import StratifiedKFold, KFold\n",
    "\n",
    "# 1 特征合并\n",
    "feature = pd.concat([df_train, df_test], axis=0)\n",
    "print(\"合并：\", feature.shape)\n",
    "\n",
    "# 2 顺序编码\n",
    "cat_cols = ['entinfo_basic_info_ENTSTATUS_CD', 'entinfo_basic_info_INDS_CD', 'entinfo_basic_info_REGPROVIN_CD', 'entinfo_basic_info_ENTTYPE_CD']\n",
    "cat_cols = [col for col in df_train.columns if col in cat_cols]\n",
    "for col in tqdm(cat_cols):\n",
    "    map_dict = dict(zip(list(feature[col].value_counts().index), range(feature[col].nunique())))\n",
    "    feature[col] = feature[col].map(map_dict)\n",
    "\n",
    "# 3 OneHot编码\n",
    "cat_cols = ['entinfo_basic_info_ENTSTATUS_CD', 'entinfo_basic_info_REGPROVIN_CD', 'entinfo_basic_info_ENTTYPE_CD']\n",
    "cat_features = feature[cat_cols]\n",
    "cat_col_encoder = OneHotEncoder()\n",
    "cat_features = cat_col_encoder.fit_transform(cat_features).toarray()\n",
    "one_hot_cols = []\n",
    "for i, one_hot_col in enumerate(cat_cols):\n",
    "    one_hot_cols += ['_'.join([one_hot_col, str(int(col)) if not np.isnan(col) else str(col)]) for col in list(cat_col_encoder.categories_[i])]\n",
    "cat_features = pd.DataFrame(cat_features, columns=one_hot_cols)\n",
    "feature.drop(cat_cols, axis=1, inplace=True)\n",
    "feature = pd.concat([feature.reset_index(drop=True), cat_features], axis=1)\n",
    "\n",
    "# 特征拆分\n",
    "df_train = feature[feature.FLAG.notnull()].reset_index(drop=True)\n",
    "df_test = feature[feature.FLAG.isnull()].reset_index(drop=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2a2e5e9e",
   "metadata": {},
   "source": [
    "### 2.3.4 模型训练\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "id": "71d7097b",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-12-11T09:19:20.594613Z",
     "iopub.status.busy": "2024-12-11T09:19:20.594044Z",
     "iopub.status.idle": "2024-12-11T09:25:37.997640Z",
     "msg_id": "c90542d4-a1bb-4fc2-9d28-63df91af34ef",
     "shell.execute_reply": "2024-12-11T09:25:37.996935Z",
     "shell.execute_reply.started": "2024-12-11T09:19:20.594583Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1983\n",
      "训练集维度：(60584, 1983)\n",
      "测试集维度：(6183, 1983)\n",
      "5 --------------------------------------------------------------------------------------------\n",
      "[LightGBM] [Warning] num_threads is set with n_jobs=24, nthread=24 will be ignored. Current value: num_threads=24\n",
      "Training until validation scores don't improve for 200 rounds\n",
      "[100]\ttraining's auc: 0.771962\tvalid_1's auc: 0.758818\n",
      "[200]\ttraining's auc: 0.788497\tvalid_1's auc: 0.766934\n",
      "[300]\ttraining's auc: 0.803127\tvalid_1's auc: 0.774354\n",
      "[400]\ttraining's auc: 0.814407\tvalid_1's auc: 0.778674\n",
      "[500]\ttraining's auc: 0.823982\tvalid_1's auc: 0.781087\n",
      "[600]\ttraining's auc: 0.833027\tvalid_1's auc: 0.782912\n",
      "[700]\ttraining's auc: 0.840869\tvalid_1's auc: 0.784021\n",
      "[800]\ttraining's auc: 0.848302\tvalid_1's auc: 0.784761\n",
      "[900]\ttraining's auc: 0.855223\tvalid_1's auc: 0.784877\n",
      "[1000]\ttraining's auc: 0.861551\tvalid_1's auc: 0.785276\n",
      "[1100]\ttraining's auc: 0.867501\tvalid_1's auc: 0.785418\n",
      "[1200]\ttraining's auc: 0.873161\tvalid_1's auc: 0.785084\n",
      "Early stopping, best iteration is:\n",
      "[1036]\ttraining's auc: 0.863673\tvalid_1's auc: 0.785558\n",
      "[LightGBM] [Warning] num_threads is set with n_jobs=24, nthread=24 will be ignored. Current value: num_threads=24\n",
      "Training until validation scores don't improve for 200 rounds\n",
      "[100]\ttraining's auc: 0.776428\tvalid_1's auc: 0.743062\n",
      "[200]\ttraining's auc: 0.791423\tvalid_1's auc: 0.752223\n",
      "[300]\ttraining's auc: 0.804734\tvalid_1's auc: 0.760466\n",
      "[400]\ttraining's auc: 0.81552\tvalid_1's auc: 0.764875\n",
      "[500]\ttraining's auc: 0.825162\tvalid_1's auc: 0.76827\n",
      "[600]\ttraining's auc: 0.833845\tvalid_1's auc: 0.770513\n",
      "[700]\ttraining's auc: 0.84174\tvalid_1's auc: 0.772005\n",
      "[800]\ttraining's auc: 0.848947\tvalid_1's auc: 0.772956\n",
      "[900]\ttraining's auc: 0.855828\tvalid_1's auc: 0.773629\n",
      "[1000]\ttraining's auc: 0.862344\tvalid_1's auc: 0.774436\n",
      "[1100]\ttraining's auc: 0.86815\tvalid_1's auc: 0.775153\n",
      "[1200]\ttraining's auc: 0.873983\tvalid_1's auc: 0.775517\n",
      "[1300]\ttraining's auc: 0.879574\tvalid_1's auc: 0.775576\n",
      "[1400]\ttraining's auc: 0.884653\tvalid_1's auc: 0.775856\n",
      "[1500]\ttraining's auc: 0.889663\tvalid_1's auc: 0.775945\n",
      "[1600]\ttraining's auc: 0.894522\tvalid_1's auc: 0.775672\n",
      "Early stopping, best iteration is:\n",
      "[1446]\ttraining's auc: 0.886857\tvalid_1's auc: 0.776069\n",
      "[LightGBM] [Warning] num_threads is set with n_jobs=24, nthread=24 will be ignored. Current value: num_threads=24\n",
      "Training until validation scores don't improve for 200 rounds\n",
      "[100]\ttraining's auc: 0.771483\tvalid_1's auc: 0.760346\n",
      "[200]\ttraining's auc: 0.78701\tvalid_1's auc: 0.771583\n",
      "[300]\ttraining's auc: 0.80093\tvalid_1's auc: 0.77918\n",
      "[400]\ttraining's auc: 0.812201\tvalid_1's auc: 0.78393\n",
      "[500]\ttraining's auc: 0.821839\tvalid_1's auc: 0.786896\n",
      "[600]\ttraining's auc: 0.830622\tvalid_1's auc: 0.788545\n",
      "[700]\ttraining's auc: 0.838745\tvalid_1's auc: 0.789645\n",
      "[800]\ttraining's auc: 0.846124\tvalid_1's auc: 0.790143\n",
      "[900]\ttraining's auc: 0.853361\tvalid_1's auc: 0.790966\n",
      "[1000]\ttraining's auc: 0.859877\tvalid_1's auc: 0.791508\n",
      "[1100]\ttraining's auc: 0.866099\tvalid_1's auc: 0.791497\n",
      "[1200]\ttraining's auc: 0.872152\tvalid_1's auc: 0.79179\n",
      "[1300]\ttraining's auc: 0.87815\tvalid_1's auc: 0.791727\n",
      "[1400]\ttraining's auc: 0.883447\tvalid_1's auc: 0.791224\n",
      "Early stopping, best iteration is:\n",
      "[1203]\ttraining's auc: 0.872295\tvalid_1's auc: 0.791803\n",
      "[LightGBM] [Warning] num_threads is set with n_jobs=24, nthread=24 will be ignored. Current value: num_threads=24\n",
      "Training until validation scores don't improve for 200 rounds\n",
      "[100]\ttraining's auc: 0.774799\tvalid_1's auc: 0.742836\n",
      "[200]\ttraining's auc: 0.790011\tvalid_1's auc: 0.752636\n",
      "[300]\ttraining's auc: 0.80336\tvalid_1's auc: 0.761797\n",
      "[400]\ttraining's auc: 0.815175\tvalid_1's auc: 0.767754\n",
      "[500]\ttraining's auc: 0.824916\tvalid_1's auc: 0.770872\n",
      "[600]\ttraining's auc: 0.833603\tvalid_1's auc: 0.772631\n",
      "[700]\ttraining's auc: 0.841606\tvalid_1's auc: 0.773825\n",
      "[800]\ttraining's auc: 0.849263\tvalid_1's auc: 0.77441\n",
      "[900]\ttraining's auc: 0.856352\tvalid_1's auc: 0.775074\n",
      "[1000]\ttraining's auc: 0.862511\tvalid_1's auc: 0.775675\n",
      "[1100]\ttraining's auc: 0.868769\tvalid_1's auc: 0.775627\n",
      "[1200]\ttraining's auc: 0.874729\tvalid_1's auc: 0.776009\n",
      "[1300]\ttraining's auc: 0.880133\tvalid_1's auc: 0.776469\n",
      "[1400]\ttraining's auc: 0.885468\tvalid_1's auc: 0.776704\n",
      "[1500]\ttraining's auc: 0.890316\tvalid_1's auc: 0.776638\n",
      "[1600]\ttraining's auc: 0.894909\tvalid_1's auc: 0.776785\n",
      "[1700]\ttraining's auc: 0.899558\tvalid_1's auc: 0.776891\n",
      "[1800]\ttraining's auc: 0.903987\tvalid_1's auc: 0.776656\n",
      "[1900]\ttraining's auc: 0.908101\tvalid_1's auc: 0.776639\n",
      "Early stopping, best iteration is:\n",
      "[1759]\ttraining's auc: 0.902185\tvalid_1's auc: 0.776956\n",
      "[LightGBM] [Warning] num_threads is set with n_jobs=24, nthread=24 will be ignored. Current value: num_threads=24\n",
      "Training until validation scores don't improve for 200 rounds\n",
      "[100]\ttraining's auc: 0.773937\tvalid_1's auc: 0.747691\n",
      "[200]\ttraining's auc: 0.789891\tvalid_1's auc: 0.758009\n",
      "[300]\ttraining's auc: 0.803568\tvalid_1's auc: 0.764438\n",
      "[400]\ttraining's auc: 0.815103\tvalid_1's auc: 0.769714\n",
      "[500]\ttraining's auc: 0.824804\tvalid_1's auc: 0.772407\n",
      "[600]\ttraining's auc: 0.833453\tvalid_1's auc: 0.774449\n",
      "[700]\ttraining's auc: 0.841069\tvalid_1's auc: 0.77589\n",
      "[800]\ttraining's auc: 0.848603\tvalid_1's auc: 0.776641\n",
      "[900]\ttraining's auc: 0.855456\tvalid_1's auc: 0.777288\n",
      "[1000]\ttraining's auc: 0.862005\tvalid_1's auc: 0.777819\n",
      "[1100]\ttraining's auc: 0.868243\tvalid_1's auc: 0.778587\n",
      "[1200]\ttraining's auc: 0.87416\tvalid_1's auc: 0.778993\n",
      "[1300]\ttraining's auc: 0.879677\tvalid_1's auc: 0.77922\n",
      "[1400]\ttraining's auc: 0.884886\tvalid_1's auc: 0.779126\n",
      "Early stopping, best iteration is:\n",
      "[1284]\ttraining's auc: 0.878792\tvalid_1's auc: 0.779313\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "556"
      ]
     },
     "execution_count": 89,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import os\n",
    "import gc\n",
    "import random\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "import lightgbm as lgb\n",
    "from sklearn.model_selection import StratifiedKFold, KFold\n",
    "from sklearn.metrics import roc_auc_score,f1_score\n",
    "\n",
    "# 预删除特征 \n",
    "drop_cols = [\n",
    "    'CUST_NO', 'FLAG', 'is_test', 'entinfo_basic_info_INDS_CD_truncated' \n",
    "]\n",
    "feature_name = [i for i in df_train.columns if i not in drop_cols]\n",
    "X_train = df_train[feature_name].reset_index(drop=True)\n",
    "X_test = df_test[feature_name].reset_index(drop=True)\n",
    "y = df_train['FLAG'].reset_index(drop=True)\n",
    "print(len(feature_name))\n",
    "print(\"训练集维度：{}\".format(X_train.shape))\n",
    "print(\"测试集维度：{}\".format(X_test.shape))\n",
    "\n",
    "# 固定随机种子\n",
    "def set_seed(seed=2020):\n",
    "    random.seed(seed)\n",
    "    os.environ['PYTHONHASHSEED'] = str(seed)\n",
    "    np.random.seed(seed)\n",
    "    # torch.manual_seed(seed)\n",
    "set_seed(2020)  # 控制系统变量\n",
    "\n",
    "seeds = [5, 4, 2, 209, 4096, 2048, 1024, 2015, 1015, 820]\n",
    "num_model_seed = 1\n",
    "oof = np.zeros(X_train.shape[0])\n",
    "prediction = np.zeros(X_test.shape[0])\n",
    "pred = []\n",
    "feat_imp_df = pd.DataFrame({'feats': feature_name, 'imp': 0})\n",
    "parameters = {\n",
    "    'boosting_type': 'gbdt',\n",
    "    'objective': 'binary',\n",
    "    'metric': ['logloss', 'auc'],\n",
    "    'min_child_weight': 10,\n",
    "    'num_leaves': 2 ** 4,\n",
    "    'lambda_l1': 0.1,\n",
    "    'lambda_l2':10,\n",
    "    'feature_fraction': 0.8, \n",
    "    'bagging_fraction': 0.8, \n",
    "    'bagging_freq': 4,\n",
    "    'learning_rate': 0.01,\n",
    "    'seed': 2020,\n",
    "    'nthread': 24,\n",
    "    'n_jobs': 24,\n",
    "    'verbose': -1,\n",
    "}\n",
    "fold = 5\n",
    "for model_seed in range(num_model_seed):\n",
    "    print(seeds[model_seed],\"--------------------------------------------------------------------------------------------\")\n",
    "    oof_cat = np.zeros(X_train.shape[0])\n",
    "    prediction_cat = np.zeros(X_test.shape[0])\n",
    "    skf = StratifiedKFold(n_splits=fold, random_state=seeds[model_seed], shuffle=True)\n",
    "    for index, (train_index, test_index) in enumerate(skf.split(X_train, y)):\n",
    "        train_x, test_x, train_y, test_y = X_train[feature_name].iloc[train_index], X_train[feature_name].iloc[test_index], y.iloc[train_index], y.iloc[test_index]\n",
    "        dtrain = lgb.Dataset(train_x, label=train_y)\n",
    "        dval = lgb.Dataset(test_x, label=test_y)\n",
    "        lgb_model = lgb.train(\n",
    "            parameters, \n",
    "            dtrain, \n",
    "            num_boost_round=50000, \n",
    "            valid_sets=[dtrain, dval], \n",
    "            callbacks=[lgb.early_stopping(200),lgb.log_evaluation(100)],\n",
    "            init_model=None\n",
    "        )\n",
    "        oof_cat[test_index] += lgb_model.predict(test_x,num_iteration=lgb_model.best_iteration)\n",
    "        prediction_cat += lgb_model.predict(X_test,num_iteration=lgb_model.best_iteration) / fold\n",
    "        feat_imp_df['imp'] += lgb_model.feature_importance()\n",
    "        del train_x\n",
    "        del test_x\n",
    "        del train_y\n",
    "        del test_y\n",
    "        # del lgb_model  # TODO\n",
    "    oof += oof_cat / num_model_seed\n",
    "    prediction += prediction_cat / num_model_seed\n",
    "    pred.append(prediction_cat)\n",
    "gc.collect()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "36c6f98c",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-12-11T09:25:38.006219Z",
     "iopub.status.busy": "2024-12-11T09:25:38.005858Z",
     "iopub.status.idle": "2024-12-11T09:25:38.797414Z"
    }
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/tmp/ipykernel_1681/3432962953.py:8: RuntimeWarning: invalid value encountered in true_divide\n",
      "  f1_scores = (precisions * recalls) / (precisions + recalls)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "train's precision: 0.2991861648016277\n",
      "train's recall: 0.4640265067844746\n",
      "train's auc: 0.7817078301951976\n",
      "train's ks: 0.4223626745227005\n",
      "train's F1: 0.36380504700643246\n",
      "train's F2: 0.18190252350321623\n",
      "最佳阈值:  0.18530187821176344\n",
      "打印分类报告: \n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "         0.0       0.93      0.87      0.90     54246\n",
      "         1.0       0.30      0.46      0.36      6338\n",
      "\n",
      "    accuracy                           0.83     60584\n",
      "   macro avg       0.62      0.67      0.63     60584\n",
      "weighted avg       0.87      0.83      0.85     60584\n",
      "\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<AxesSubplot:>"
      ]
     },
     "execution_count": 90,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "## 二分类最佳阈值搜索\n",
    "# 最佳阈值搜索\n",
    "from sklearn.metrics import classification_report, precision_score, recall_score, f1_score, precision_recall_curve,  roc_curve, auc\n",
    "\n",
    "def do_metrics(y_true, y_pred):\n",
    "    precisions, recalls, thresholds = precision_recall_curve(y_true, y_pred)\n",
    "    \n",
    "    f1_scores = (precisions * recalls) / (precisions + recalls)\n",
    "    best_t = thresholds[np.argmax(f1_scores[np.isfinite(f1_scores)])]  # 寻找最佳阈值\n",
    "    \n",
    "    y_1 = [1 if x >= best_t else 0 for x in y_pred]\n",
    "    clf_report1 = classification_report(y_true.values, y_1)\n",
    "    curr_f1score = f1_score(y_true, y_1)\n",
    "    recall = recall_score(y_true, y_1)\n",
    "    precision = precision_score(y_true, y_1)\n",
    "    F_score = (precision * recall) / (precision + recall)\n",
    "    fpr, tpr ,th = roc_curve(y_true, y_pred)\n",
    "\n",
    "    print(f\"train's precision: {precision}\")\n",
    "    print(f\"train's recall: {recall}\")\n",
    "    print(f\"train's auc: {auc(fpr,tpr)}\")\n",
    "    \n",
    "    print(f\"train's ks: {max(tpr-fpr)}\")\n",
    "    print(f\"train's F1: {curr_f1score}\")\n",
    "    print(f\"train's F2: {F_score}\")\n",
    "    print(f\"最佳阈值:  {str(best_t)}\")\n",
    "    print('打印分类报告: ')\n",
    "    print(clf_report1)\n",
    "\n",
    "    return best_t, curr_f1score, F_score\n",
    "\n",
    "best_t, curr_f1score, F_score = do_metrics(y, oof)\n",
    "\n",
    "# tpr/fpr曲线\n",
    "import seaborn as sns\n",
    "from sklearn.metrics import roc_curve, auc\n",
    "fpr, tpr ,th = roc_curve(y, oof)\n",
    "data_p=pd.DataFrame()\n",
    "data_p['tpr'] = tpr\n",
    "data_p['fpr'] = fpr\n",
    "data_p['diff'] = tpr-fpr\n",
    "sns.lineplot(data=data_p)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 133,
   "id": "e9b12b50",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-12-11T11:15:22.498662Z",
     "iopub.status.busy": "2024-12-11T11:15:22.498128Z",
     "iopub.status.idle": "2024-12-11T11:15:22.523437Z",
     "msg_id": "fb3535d9-cb2c-4275-8e96-5738fb232360",
     "shell.execute_reply": "2024-12-11T11:15:22.522714Z",
     "shell.execute_reply.started": "2024-12-11T11:15:22.498633Z"
    }
   },
   "outputs": [],
   "source": [
    "# 业务规则\n",
    "# 年日均aum：小于等于60\n",
    "# 季日均aum除金融资产：0.6~0.9\n",
    "# 季日均aum除金融资产：0.4~0.8\n",
    "# 跨行转账月流入交易笔数：小于等于10笔\n",
    "# 其他三方支付交易笔数：小于等于40笔\n",
    "# 跨行转账月流出笔数：小于等于15笔\n",
    "# 财付通季交易笔数：小于等于120笔\n",
    "sub_df = df_test[['CUST_NO', 'FLAG']].reset_index(drop=True)\n",
    "sub_df['FLAG'] = [1 if x >= best_t else 0 for x in prediction]\n",
    "final_prediction = pd.DataFrame({'CUST_NO': df_test['CUST_NO'].reset_index(drop=True), \"prediction\": prediction})\n",
    "hard_cust = final_prediction[final_prediction['prediction'].between(0.1830,0.1975)]['CUST_NO'].tolist() #  阈值附近困难样本\n",
    "rule_cust = df_test[(df_test['asset_AST_YAVER_AUM_BAL'].between(0, 60)) & (df_test['asset2_SAVER_AUM_div_FA'].between(0.6, 0.9)) & (df_test['asset2_MAVER_AUM_div_FA'].between(0.4, 0.8)) & (df_test['IBTF_MOTH_TR_CNT_IN'].between(0, 10)) & (df_test['TPAY2_OTHER_SEAN_TR_CNT'].between(0, 40)) & (df_test['IBTF2_MOTH_TR_CNT_OUT']<=15) & (df_test['TPAY_WX_SEAN_TR_CNT']<=120) & (((df_test['nature_NTRL_RANK_CD']==1) & ((df_test['asset_AST_AUM_BAL_MAX'].between(18, 20.5)) | (df_test['asset_AST_AUM_BAL_MAX'].between(21.4, 21.75) | (df_test['asset_AST_AUM_BAL_MAX'].between(25, 26))))) | ((df_test['nature_NTRL_RANK_CD']==3) & (df_test['asset_AST_YAVER_AUM_BAL'].between(56, 58))) | ((df_test['nature_NTRL_RANK_CD']==4) & (df_test['asset_AST_YAVER_AUM_BAL'].between(30, 32)))) & (df_test['CUST_NO'].isin(hard_cust))]['CUST_NO'].tolist()\n",
    "sub_df.loc[sub_df['CUST_NO'].isin(rule_cust), 'FLAG'] = 0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 134,
   "id": "e3ece8b7",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-12-11T11:15:22.697526Z",
     "iopub.status.busy": "2024-12-11T11:15:22.696954Z",
     "iopub.status.idle": "2024-12-11T11:15:24.365552Z",
     "msg_id": "4bd2aafe-4116-4a55-8bd7-7e5bb3c36dea",
     "shell.execute_reply": "2024-12-11T11:15:24.364765Z",
     "shell.execute_reply.started": "2024-12-11T11:15:22.697499Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['entinfo_basic_info_ESDATE_diff_DATA_DAT', 'asset_AST_YAVER_AUM_BAL', 'nature_NTRL_CUST_AGE', 'IBTF_YEAR_TR_AMT', 'asset_DEBT_LOAN_BAL_YAVER', 'aps_CUST_NO_APSDTRCHL_CUST_NO_count_0344a1c16cfcb952dffba70a37ab4da9_div_tr_freq_in', 'IBTF_YEAR_TR_AMT_IN', 'entinfo_basic_info_REGPROVIN_CD_esdyearsmax', 'entinfo_basic_info_REGPROVIN_CD_esdyearsmean', 'entinfo_basic_info_REGPROVIN_CD_REGCAP_min', 'entinfo_basic_info_REGCAP', 'entinfo_basic_info_REGPROVIN_CD_REGCAP_mean', 'CUST_NO_mb_pageview_dtl_REFERRER_MODEL_NAME_text_count_sum_c99a39f3c62ae02128cdb0acf5c1d2dd_6bb41067851861502c74edd3b31005ae', 'merch_tr_max_amt_days_to_now_0', 'asset_DEBT_LOAN_BAL_MAVER', 'asset_AST_SAVER_AUM_BAL', 'asset_DEBT_LOAN_BAL_SAVER', 'TPAY_WX_MOTH_TR_AMT', 'TPAY_WX_SEAN_TR_AMT', 'CUST_NO_mb_pageview_dtl_REFERRER_MODEL_NAME_text_count_mean_c99a39f3c62ae02128cdb0acf5c1d2dd_c99a39f3c62ae02128cdb0acf5c1d2dd', 'asset2_DAY_DP_div_LOAN', 'CUST_NO_max_nunique_days_to_now_c99a39f3c62ae02128cdb0acf5c1d2dd', 'IBTF2_YEAR_TR_AMT_NET_div_ALL', 'entinfo_basic_info_REGPROVIN_CD_esdyearsstd', 'CUST_NO_date_months_to_now_mb_pageview_dtl_REFERRER_TITLE_text_emb_31_32_First', 'entinfo_basic_info_INDS_CD', 'aps_CUST_NO_date_months_to_now_APSDTRAMT_mean_0_out', 'asset2_SAVER_AUM_div_FA', 'aps_CUST_NO_date_months_to_now_APSDTRAMT_min_0_in', 'asset_AST_YAVER_DP_BAL', 'CUST_NO_mb_pageview_dtl_REFERRER_MODEL_NAME_text_count_sum_c99a39f3c62ae02128cdb0acf5c1d2dd_a780b0fb118f24e312c529fa155a9842', 'CUST_NO_max_count_days_to_now_c99a39f3c62ae02128cdb0acf5c1d2dd', 'aps_CUST_NO_date_months_to_now_APSDTRAMT_sum_0_in', 'aps_CUST_NO_APSDTRCHL_CUST_NO_count_2be0e6cf9dab3119ff0391c27dec73c2_div_tr_freq_out', 'CUST_NO_date_months_to_now_mb_pageview_dtl_REFERRER_MDDEL_NAME_text_emb_13_32_First', 'asset2_AST_SAVER_FA_BAL', 'CUST_NO_max_count_days_to_now_b3ab3a75ec639b57bcfa5464d2beb2e3', 'TPAY_SEAN_TR_AMT', 'aps_CUST_NO_APSDTRCHL_APSDTRAMT_skew_2be0e6cf9dab3119ff0391c27dec73c2_out', 'CUST_NO_date_months_to_now_mb_pageview_dtl_REFERRER_MDDEL_NAME_text_emb_14_32_First', 'merch_tr_recent_days_to_now_0', 'TPAY_MOTH_TR_AMT', 'asset2_AST_DAY_FA_BAL', 'asset_AST_MAVER_AUM_BAL', 'asset_DEBT_LOAN_BAL', 'CUST_NO_date_months_to_now_mb_pageview_dtl_REFERRER_MDDEL_NAME_text_emb_31_32_First', 'aps_CUST_NO_APSDTRCHL_APSDTRAMT_max_0344a1c16cfcb952dffba70a37ab4da9_out', 'TPAY_ALI_SEAN_TR_AMT', 'CUST_NO_mb_pageview_dtl_REFERRER_MODEL_NAME_text_count_sum_c99a39f3c62ae02128cdb0acf5c1d2dd_c99a39f3c62ae02128cdb0acf5c1d2dd', 'aps_CUST_NO_date_months_to_now_APSDTRAMT_mean_0_in', 'aps_CUST_NO_date_months_to_now_APSDTRAMT_median_0_in', 'CUST_NO_date_months_to_now_mb_pageview_dtl_REFERRER_TITLE_text_emb_21_32_First', 'entinfo_basic_info_REGPROVIN_CD_13', 'merch_tr_maxminamt_diff_2', 'aps_CUST_NO_date_months_to_now_APSDTRAMT_sum_0_out', 'IBTF2_YEAR_TR_AMT_OUT', 'TPAY2_OTHER_MOTH_TR_AMT', 'IBTF2_YEAR_TR_AMT_OUT_each', 'aps_CUST_NO_APSDTRCHL_APSDTRAMT_max_2be0e6cf9dab3119ff0391c27dec73c2_in', 'CUST_NO_max_nunique_days_to_now_a780b0fb118f24e312c529fa155a9842', 'CUST_NO_merch_tr_dtl_COD_TR_merch_tr_dtl_AMT_TR_kurt_7c201ee9b1e9534225f62e7f5eabb571', 'aps_in_out_maxamt_days_diff_1_', 'asset2_AST_YAVER_TD_BAL', 'CUST_NO_merch_tr_dtl_COD_TR_merch_tr_dtl_AMT_TR_sum_7c201ee9b1e9534225f62e7f5eabb571', 'CUST_NO_date_months_to_now_mb_pageview_dtl_REFERRER_TITLE_text_emb_2_32_First', 'asset_AST_SAVER_DP_BAL', 'CUST_NO_date_months_to_now_mb_pageview_dtl_REFERRER_MDDEL_NAME_text_emb_13_32_Third', 'merch_tr_max_amt_0', 'CUST_NO_merch_tr_dtl_COD_TR_merch_tr_dtl_AMT_TR_min_7c201ee9b1e9534225f62e7f5eabb571', 'aps_in_out_max_absamt_diff_0_', 'CUST_NO_date_months_to_now_mb_pageview_dtl_REFERRER_TITLE_text_emb_13_32_Third', 'CUST_NO_max_count_days_to_now_e1db7167ba7354e6f7726a826157b01d', 'CUST_NO_max_count_days_to_now_6bb41067851861502c74edd3b31005ae', 'TPAY_ALI_MOTH_TR_AMT', 'aps_CUST_NO_APSDTRCHL_CUST_NO_count_c7d6fc844548cf4d7f252b5066ecfa80_div_tr_freq_in', 'merch_tr_maxminamt_diff_0', 'ATC_feat', 'CUST_NO_max_nunique_days_to_now_6bb41067851861502c74edd3b31005ae', 'TPAY2_TPAY_WX_MOTH_TR_AMT_each', 'asset2_AST_MAVER_FA_BAL', 'aps_CUST_NO_date_months_to_now_APSDTRAMT_kurt_2_in', 'CUST_NO_mb_pageview_dtl_REFERRER_MODEL_NAME_text_count_std_f0e4745172d74e9a04b3313dd8a9f4ee_e1db7167ba7354e6f7726a826157b01d', 'aps_CUST_NO_APSDTRCHL_APSDTRAMT_std_2be0e6cf9dab3119ff0391c27dec73c2_in', 'aps_max_amt_days_to_now_0_in_', 'CUST_NO_mb_pageview_dtl_REFERRER_TITLE_text_count_sum_ff75360da2154fd20952e2f5c03861ef_6c9351679754f4ec681e8d3e5146903d', 'CUST_NO_mb_pageview_dtl_REFERRER_MODEL_NAME_text_count_mean_c99a39f3c62ae02128cdb0acf5c1d2dd_6bb41067851861502c74edd3b31005ae', 'aps_CUST_NO_date_months_to_now_APSDTRAMT_std_1_out', 'CUST_NO_mb_pageview_dtl_MODEL_NAME_mb_pageview_dtl_REFERRER_TITLE_text_nunique_e1db7167ba7354e6f7726a826157b01d', 'TPAY_ALI_SEAN_TR_CNT', 'aps_CUST_NO_date_months_to_now_APSDTRAMT_min_1_in', 'IBTF2_YEAR_TR_AMT_IN_each', 'CUST_NO_merch_tr_dtl_COD_TR_merch_tr_dtl_AMT_TR_std_7c201ee9b1e9534225f62e7f5eabb571', 'CUST_NO_date_months_to_now_mb_pageview_dtl_REFERRER_TITLE_text_emb_10_32_First', 'asset_AST_DAY_AUM_BAL', 'aps_CUST_NO_date_months_to_now_APSDTRAMT_max_2_out', 'CUST_NO_mb_pageview_dtl_REFERRER_MODEL_NAME_text_count_mean_other', 'CUST_NO_max_count_days_to_now_a72547450932263fae5aff76dc29ef1f', 'aps_CUST_NO_APSDTRCHL_APSDTRAMT_sum_c7d6fc844548cf4d7f252b5066ecfa80_in', 'CUST_NO_date_months_to_now_merch_tr_dtl_AMT_TR_std_0', 'CUST_NO_max_nunique_days_to_now_b3ab3a75ec639b57bcfa5464d2beb2e3']\n"
     ]
    },
    {
     "data": {
      "image/png": "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cZ05c0ZLly7V119/rfXr1xs+4wx37tyRjY2NUay2trZGFS6lB0l5np6eKl26tDp27KiEhIQcnzcpKUlOTk6ytLSUJF24cEGvvvqqWrZsqbi4OL3xxhsaNmyYYXytWrUM79yKFSuUmJiYbZv0IJl8woQJWrBggXbu3Klr166pffv2hvlSUlLUrFkzbd68WYcOHVJwcLBatmyZbdx//PGH1q5da1S1c/fu3XJxcVG1atUMbY0bN5a5ubkhyfX27dt67rnntHbtWv30009688039frrrxt+bh6Vmpqq2NhY3bhxQzVr1sxyzMGDBxUXF2cUS1pamooXL65ly5bp+PHjGjVqlN59910tXbrU6N7NmzfrxIkT2rp1qxYvXqyVK1dqzJgxRmP69u2r5s2bZ/oZzVjn1VdflZWVlfbu3atZs2ZlWfHX0dFRMTExOn78uGbMmKG5c+dq2rRphv7s3qt9+/blKeFvypQpiomJUVRUlHbs2KErV65o1apV2Y7v2LGj9u3bZ/hHLJJ07NgxHTlyRB06dMhxrfDwcLVr107BwcGGCqQZ75kkDRs2TAMHDtSJEycUFBSU7Ty5va8ffPCB5s2bp2PHjqlIkSLq16+fdu/erdjYWB05ckSvvfaagoODdfr0aUnS3r171b17d/Xr109xcXFq0KCBxo8fn+ve5WTLli06e/astmzZovnz5ysmJibbf1xy584dJScnG10AAAAAAAAAAACmsszvAAAA/9sePuZUelAhrXDhwjp+/Lih6lW/fv0M4z7//HOtX79ekZGRGjJkiBISElSlShVDcoi3t3ee1j19+rScnJzk4eHxVJ6jf//+2r59uypWrKiSJUuqRo0aeumll9SxY0dZW1s/lTUyjBgxQtHR0Vq4cKFef/11o74///xT165dk7+/f5b3+vv7Kz09XWfOnNELL7yQ61qRkZEKCwuTJAUHByspKUnbtm3LtgLgtWvXNG7cODk4OOiFF15Q0aJF9fHHH2vIkCEaM2aMqlWrpgYNGqhjx46GCms58fPzkySjKnF58dlnn2nevHm6e/eu7t27JxsbGw0YMECSDIkdGXPnplatWjI3N/43Kbdu3TKqqvW4eA9zfg+vX7+uGTNmaObMmercubMkqUyZMqpTp44kadGiRbp9+7YWLFgge3t7SdLMmTPVsmVLffDBB4bEvbxo1qyZISlv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kBAlJiaqoKBAgwcP1sWLFxUVFSU3Nzft3LlTy5cvV3p6ut544407mv/YsWPasGGDKlasaNFzS5YskcFgUL9+/cpsv13FUHt7exUVFRkTBW9UWFhoTO67Ma7FixerZcuWCgsLM+lvbW2tQYMGaf/+/crJyZGHh4c6duxYKmFu/vz5qlatmlq1anXL2BISElRYWKj333//lv3KsmHDBp06dcrk83UjV1fXWz5vbW2tgQMH6vjx49q9e/dt59u6dateffVVDRw4UPv379esWbM0f/58TZgwQdL179q0adM0a9YsHTp0SF988YVCQ0ONz3fv3l0nTpxQRkaGPvvsM82YMcPkaPjXXntN69evV0FBgfHe6tWrdenSJePvwO1+X4qKilStWjUtX75c+/fv16hRo/TWW29p2bJlJmvZtGmT8vLy9NVXX2n16tXatWuXBgwYoLFjxyovL0/r16/X008/bfLMggUL5OHhoR07dig+Pl59+/ZVdHS0mjRpom+++UatWrVS165ddenSJbNiqVSpkhYtWqQFCxZo1apVunbtmrp06aKWLVsafxNvduXKFZ0/f97kAgAAAAAAAAAAsJTtgw4AAAAAQGlXrlzRxIkTlZ6ersaNG0uS/P39tW3bNs2aNctY6W3ChAl65plnJEnDhg1T27Zt9dtvv8ne3l4Gg8FYNfF2Bg8erLZt20qSxowZo5CQEH3//feqVauWHn30UUnXj+IuGSs1NVXNmzc3Hs0cGBio/fv365133lH37t3NWmNERISGDRtmfD4zM1PTpk1Ty5YtJalU1cnx48erT58+mjFjhiQpPz9fL774ojExzd/fv9y5pkyZovDwcOOz0vUjve/Us88+a0xiHDp0qKZNm6aMjAwFBQXJ09NTtra2MhgMxv2aPXu2fvvtNy1cuNBYjXL69Olq3769Jk+erCpVqtx2ztzcXBkMBl27dk2//fabpOvvw82GDh2qESNGmNxbt26dnnrqKR08eFD+/v6ytf2//xRMTU3VqFGjjK9//PFHubi4lBr30KFDmjlzpsLDw02OZI+NjZWNjY0uX76soqIi+fr6qnPnzsb2gwcPqlmzZmWuKTg42NjnscceU1xcnNq0aaOjR4/Kz89PxcXFWrBggbp16yZr61v/+0EHBweNHj1ab731lnr16lXmGspz6NAhSVKtWrXMfuZmJc8eO3ZMDRo0uGXfMWPGaNiwYerWrZuk65/dcePGaciQIRo9erTy8/Pl6empFi1aqEKFCqpevbpxzIMHD2rdunXasWOH6tevL0maO3eucS8lqUmTJgoKCtLHH39sTCpNS0tTdHS0DAbDbX9fnnnmGVWoUEFjxowxjunn56esrCwtW7bM5P11dHTUnDlzjEm3K1eulKOjo9q1aycnJyfVqFFD9erVM1l/WFiY8TM6fPhwTZo0SR4eHurVq5ckadSoUfrwww+1d+9eNWrUyKxYHnvsMY0fP16vvfaaXnrpJR0/flyrV68u9z1ITk42GRMAAAAAAAAAAOBOUAETAAAAeAh9//33unTpklq2bCmDwWC8Fi5cqMOHDxv71a1b1/jnqlWrSpJJJTxzWTrOgQMHFBERYXIvIiJChw4dMruqZEni142vDxw4YHydnp6u5s2by9vbW05OTuratatOnz5trIo3YMAAjR8/XhERERo9erT27t1b7lwlFTDvlRv3q+SY7tvtV1hYmDH5Urq+X0VFRcbKmbcTFBSk7Oxs7dy5U0OHDlVUVJTi4+NL9XvzzTeVnZ1tcoWHh5c7bs+ePZWdna1Zs2bp4sWLKi4uNradO3dOBoNBDg4OCgoKUpUqVUoddz1t2jRlZ2dr3bp1ql27tubMmaPKlSub9LlxzFtp2bKlqlWrprS0NEnXqyvm5+erR48eZj0fFxcnd3d3TZ482az+lsZnzhi3qyIqSTk5ORo7dqzJd7tXr14qKCjQpUuXFB0drcuXL8vf31+9evXS559/bqw6euDAAdna2uqJJ54wjlerVq1SVTpfe+014z7+/PPPWrdunbEapLm/Lx988IGeeOIJPfLIIzIYDProo4+Un59vMk9oaKhJxdOWLVuqRo0a8vf3V9euXbVo0SLjd7bEjd8fGxsbubu7m1T4LElIvvE7ZU4siYmJCgwM1PTp0zVv3jy5u7uX+x4MHz5c586dM14nTpwoty8AAAAAAAAAAEB5SMAEAAAAHkIXLlyQJK1Zs8YkkW7//v367LPPjP0qVKhg/HNJ4ldRUZHF892rce6VY8eOqV27dqpbt65WrFih3bt364MPPpAk/f7775KuJ5gdOXJEXbt2VW5ursLDw8s9ftre3v6exnfjfknX9+yP3q+KFSsqICBAderU0aRJk2RjY1NmBT8PDw8FBASYXCXrr1mzpo4cOaKrV68a+7u6uiogIEDe3t6lxnJyclJ2dra+/fZbXbx4UV9//bUCAwNN+nh6eiogIECtWrVSWlqaYmJiTBLnAgMDTRJrb1Ryv2RMa2trde/eXQsWLFBRUZHS0tLUrFmzW1Y3vZGtra0mTJigf/zjH/rPf/5j1jM3zv/dd9+Z/czNStbi5+d3274XLlzQmDFjTL7bubm5OnTokCpVqiQfHx/l5eVpxowZsre3V79+/fT000+bvG+38+qrr+rIkSPKysrSJ598Ij8/Pz311FPG+aVb/74sXbpUgwcPVlxcnDZu3Kjs7Gz16NHD+P0rcWNSsXT9M/PNN99oyZIlqlq1qkaNGqWwsDD98ssvxj5lfX9u9RtkbiwnT57UwYMHZWNjY6xqWh47Ozs5OzubXAAAAAAAAAAAAJYiARMAAAB4CNWuXVt2dnbKz88vlUzn4+Nj1hgVK1Y0uxqlpYKDg5WZmWlyLzMzU4GBgbKxsTFrjO3bt5d6XXKM8u7du1VUVKSUlBQ1atRIgYGBZSbU+fj4qE+fPlq5cqUSExM1e/bsMueqW7euNm3aZFZcf4Tg4GDl5OTo4sWLxnuZmZmytrZWUFDQHY05YsQITZ061aJEw9jYWF24cMHkKPZbsba2VkBAgPz9/c1KYm3QoIGeeOIJTZgwwXjvpZdeUnp6unJyckz6FhUVadq0aapdu7bCwsKM93v06KETJ05o5cqV+vzzzxUXF2fm6q6Ljo5WSEiIRcdLt2rVSh4eHpoyZUqZ7TcmD5alqKhI7733nvz8/Eodt12Wxx9/XHl5eaW+2wEBAcaj1u3t7dW+fXu999572rJli7KyspSbm6tatWqpsLBQu3fvNo6Xl5dXKkZ3d3c999xzSktL0/z5802qiJrz+5KZmakmTZqoX79+qlevngICAkyqY96Kra2tWrRooSlTpmjv3r06duyYNm/ebNazZTE3lp49eyo0NFQLFizQ0KFDy038BQAAAAAAAAAAuFdsH3QAAAAAAEpzcnLS4MGDNWjQIBUVFenJJ5/UuXPnlJmZKWdnZ9WoUeO2Y/j6+uro0aPKzs5WtWrV5OTkJDs7u3sSX2JiourXr69x48YpJiZGWVlZmj59utmJfdL1pKopU6boueee01dffaXly5drzZo1kqSAgABdvXpV77//vtq3b6/MzEzNnDnT5PmEhAS1adNGgYGBOnv2rDIyMowJnDcbPny4QkND1a9fP/Xp00cVK1ZURkaGoqOj5eHhcecbYaZXXnlFo0ePVrdu3ZSUlKT//ve/io+PV9euXY3HLVuqcePGqlu3riZOnKjp06cb7//666/66aefTPo6ODjI2dlZjRs3VmJiohITE3X8+HG98MIL8vHxUUFBgebOnSsrKytjAuCdSkhI0PPPP68hQ4bI29tbgwYN0qpVq9S+fXulpKSoYcOG+vnnnzVx4kQdOHBA6enpJsd2+/n5KTIyUr1795adnZ1eeOEFi2OYNGmSoqKizO7v6OioOXPmKDo6Wh06dNCAAQMUEBCgU6dOadmyZcrPz9fSpUuN/U+fPq2ffvpJly5d0rfffqt3331XO3bs0Jo1a8xKQB41apTatWun6tWrq1OnTrK2tlZOTo6+/fZbjR8/XvPnz9e1a9fUsGFDOTg46JNPPpG9vb1q1Kghd3d3tW7dWq+//ro+/PBD2draKiEhocwE2ddee03t2rXTtWvX1K1bN+P92/2+dOvWTTVr1tTChQu1YcMG+fn56eOPP9bOnTtvW+Fz9erVOnLkiJ5++mm5ublp7dq1KioquuNEY0lmxfLBBx8oKytLe/fulY+Pj9asWaNXXnlF27dvNzkiHQAAAAAAAAAA4F6iAiYAAADwkBo3bpxGjhyp5ORkBQcHq3Xr1lqzZo1ZRxxL0osvvqjWrVurWbNmeuSRR7RkyZJ7Ftvjjz+uZcuWaenSpapTp45GjRqlsWPHqnv37maPkZiYqF27dqlevXoaP368UlNTjUlzYWFhSk1N1eTJk1WnTh0tWrRIycnJJs9fu3ZN/fv3N+5NYGBguQmggYGB2rhxo3JyctSgQQM1btxYq1atkq3t/fk3aQ4ODtqwYYPOnDmj+vXrq1OnTmrevLlJ4uSdGDRokObMmaMTJ04Y740aNUpVq1Y1uYYMGWJsnzp1qhYvXqw9e/aoXbt2qlmzpqKjo1VUVKSsrKy7Poq5devW8vPzM1bBrFSpkjZv3qxXX31Vb731lgICAtS6dWvZ2Nho+/btatSoUakx4uLidPbsWb388suqVKmSxTFERkYqMjJShYWFZj/TsWNH/etf/1KFChX08ssvq1atWoqNjdW5c+c0fvx4k74tWrRQ1apVFRoaqmHDhik4OFh79+5Vs2bNzJorKipKq1ev1saNG1W/fn01atRI06ZNMyZWu7q6avbs2YqIiFDdunWVnp6u//f//p/c3d0lSWlpafLy8tIzzzyjF154Qb1799ajjz5aap6SOKOiouTl5WXSdrvfl9dff10vvPCCYmJi1LBhQ50+fVr9+vW77dpcXV21cuVKRUZGKjg4WDNnztSSJUsUEhJi1t6U5XaxfPfdd3rzzTc1Y8YMYwXPGTNm6NSpUxo5cuQdzwsAAAAAAAAAAHA7VsXFxcUPOggAAAAAAHBvXbhwQd7e3kpLS7ujSqJ/JefPn5eLi4vC4mfKxq50NVEAAADgr2L3O68+6BAAAAAA4IEr+XuDc+fO3bZ4CUeQAwAAAADwJ1JUVKRTp04pJSVFrq6u6tChw4MOCQAAAAAAAAAA4E+JI8gBAAAA3FNbt26VwWAo93qY5Ofn3zLW/Pz8+xLHrWLYunXrfYnhz2zRokXl7u/dHI1dnpCQkHLnW7Ro0T2f72b5+fmqUqWKFi9erHnz5snWln97CQAAAAAAAAAA8Efgb2EAAAAA3FPh4eHKzs5+0GGYxcvL65axenl53Zc4bhWDt7f3fYnhz6xDhw5q2LBhmW0VKlS45/OtXbtWV69eLbOtSpUq93y+m/n6+qq4uPgPnwcAAAAAAAAAAOCvjgRMAAAAAPeUvb29AgICHnQYZrG1tX0oYn0YYvgzc3JykpOT032br0aNGvdtLgAAAAAAAAAAADw4HEEOAAAAAAAAAAAAAAAAAABgISpgAgAAAAAASPp6fKycnZ0fdBgAAAAAAAAAAOB/BBUwAQAAAAAAAAAAAAAAAAAALEQCJgAAAAAAAAAAAAAAAAAAgIVIwAQAAAAAAAAAAAAAAAAAALAQCZgAAAAAAAAAAAAAAAAAAAAWIgETAAAAAAAAAAAAAAAAAADAQrYPOgAAAAAAAICHwdMjlsjGzv5BhwEAAAD8YXa/8+qDDgEAAAAA/lSogAkAAAAAAAAAAAAAAAAAAGAhEjABAAAAAAAAAAAAAAAAAAAsRAImAAAAAAAAAAAAAAAAAACAhUjABAAAAAAAAAAAAAAAAAAAsBAJmAAAAAAAAAAAAAAAAAAAABYiARMAAAAAAAAAAAAAAAAAAMBCJGACAAAAfyJWVlb64osvLHrmiy++UEBAgGxsbJSQkHDXMfj6+urdd9+963HKs2XLFllZWemXX36567GaNm1q8Zq/++47NWrUSJUqVdJjjz121zEAt/NHf6cAAAAAAAAAAABwZ0jABAAAAP4HJSUllZn8V1BQoDZt2lg01uuvv65OnTrpxIkTGjdu3D2K8I/TpEkTFRQUyMXF5a7HWrlypcVrHj16tBwdHZWXl6dNmzbddQxJSUmysrKSlZWVbGxs5OPjo969e+vMmTMm/Xx9fY39brwmTZpk0m/FihWKjIyUm5ub7O3tFRQUpJ49e2rPnj3GPvPnzzc+b21trWrVqqlHjx46efKksc+Nczg7O6t+/fpatWpVqfgvX76s0aNHKzAwUHZ2dvLw8FB0dLT27dtn7BMaGqo+ffqUuf6PP/5YdnZ2OnXqVKnk2pLXISEhunbtmslzrq6umj9/vll7LEl79uxRdHS0qlSpokqVKqlmzZrq1auXDh48KEk6duyYyZqdnJwUEhKi/v3769ChQ2bPAwAAAAAAAAAAgL8OEjABAACAPxFPT0/Z2dmZ3f/ChQs6efKkoqKi5OXlJScnpz8wunujYsWK8vT0lJWV1V2PVblyZYvXfPjwYT355JOqUaOG3N3d7zoGSQoJCVFBQYHy8/OVlpam9evXq2/fvqX6jR07VgUFBSZXfHy8sX3o0KGKiYnRY489pi+//FJ5eXlavHix/P39NXz4cJOxnJ2dVVBQoB9++EGzZ8/WunXr1LVrV5M+aWlpKigo0K5duxQREaFOnTopNzfX2H7lyhW1aNFC8+bN0/jx43Xw4EGtXbtWhYWFatiwobZv3y5JiouL09KlS3X58uVSa0pLS1OHDh3k4eFR7v4cOXJECxcuNG8zy7B69Wo1atRIV65c0aJFi3TgwAF98skncnFx0ciRI036pqenq6CgQDk5OZo4caIOHDigsLCwe5Js+7/s999/f9AhAAAAAAAAAAAAPHRIwAQAAAAegKKiIiUnJ8vPz0/29vYKCwvTZ599Jun/qv5t2rRJ4eHhcnBwUJMmTZSXlyfpevXCMWPGKCcnx1itr6QS4I1HkJdU9Fu5cqWaNWsmBwcHhYWFKSsryzhPSfJhZGSkrKystGXLFknXqyiGhITIzs5Ovr6+SklJsWh9v/76q2JjY+Xo6Chvb2998MEHJu2pqakKDQ2Vo6OjfHx81K9fP124cMHYfvz4cbVv315ubm5ydHRUSEiI1q5da7I/Nx5BnpmZqaZNm8rBwUFubm6KiorS2bNnbxvnzUeQ+/r6auLEierZs6ecnJxUvXp1ffTRR8Z2Kysr7d69W2PHjpWVlZWSkpIkSbm5uYqMjJS9vb3c3d3Vu3dvk/Xcjq2trTw9PeXt7a0WLVooOjpaX331Val+Tk5O8vT0NLkcHR0lSdu3b9eUKVOUmpqq1NRUPfXUU6pevbqeeOIJjRgxQuvWrTMZy8rKSp6envLy8lKbNm00YMAApaenmyRJurq6ytPTU4GBgRo3bpwKCwuVkZFhbH/33XeVlZWl1atXq3PnzqpRo4YaNGigFStWKDg4WHFxcSouLlaXLl10+fJlrVixwiSGo0ePasuWLYqLi7vl/sTHx2v06NG6cuWK2Xta4tKlS+rRo4eeffZZffnll2rRooX8/PzUsGFDTZ06VbNmzTLp7+7uLk9PT/n7+6tjx45KT09Xw4YNFRcXV6oKZ3lWrVqlxx9/XJUqVZK/v7/GjBmjwsJCSVJxcbGSkpJUvXp12dnZycvLSwMGDDA+e/LkSbVv31729vby8/PTokWLTMbu2bOn2rVrZ3Lv6tWrevTRRzV37lxJt/59kaRr164pLi7O2B4UFKR//OMfJmN2795dzz33nCZMmCAvLy8FBQVJkmbMmKGaNWuqUqVKqlKlijp16mR8pmnTpoqPj1dCQoLc3NxUpUoVzZ49WxcvXlSPHj3k5OSkgICAUp/Fb7/9Vm3atJHBYFCVKlXUtWtXnTp1yti+fv16Pfnkk3J1dZW7u7vatWunw4cPG9tv91sHAAAAAAAAAADwRyEBEwAAAHgAkpOTtXDhQs2cOVP79u3ToEGD1KVLF/3zn/809nn77beVkpKiXbt2ydbWVj179pQkxcTEKDEx0Vg1saCgQDExMeXO9fbbb2vw4MHKzs5WYGCgYmNjVVhYaJLUuWLFChUUFKhJkybavXu3OnfurJdeekm5ublKSkrSyJEjLTru+Z133lFYWJj27NmjYcOGaeDAgSYJhdbW1nrvvfe0b98+LViwQJs3b9aQIUOM7f3799eVK1f09ddfKzc3V5MnT5bBYChzruzsbDVv3ly1a9dWVlaWtm3bpvbt25udLHezlJQUhYeHa8+ePerXr5/69u1r3KeCggKFhIQoMTFRBQUFGjx4sC5evKioqCi5ublp586dWr58udLT0/XGG2/c0fzHjh3Thg0bVLFiRYueW7JkiQwGg/r161dm++0qhtrb26uoqMiYKHijwsJCY3LfjXEtXrxYLVu2VFhYmEl/a2trDRo0SPv371dOTo48PDzUsWNHzZs3z6Tf/PnzVa1aNbVq1eqWsSUkJKiwsFDvv//+LfuVZcOGDTp16pTJ5+tGrq6ut3ze2tpaAwcO1PHjx7V79+7bzrd161a9+uqrGjhwoPbv369Zs2Zp/vz5mjBhgqTr37Vp06Zp1qxZOnTokL744guFhoYan+/evbtOnDihjIwMffbZZ5oxY4bJ0fCvvfaa1q9fr4KCAuO91atX69KlS8bfgdv9vhQVFalatWpavny59u/fr1GjRumtt97SsmXLTNayadMm5eXl6auvvtLq1au1a9cuDRgwQGPHjlVeXp7Wr1+vp59+2uSZBQsWyMPDQzt27FB8fLz69u2r6OhoNWnSRN98841atWqlrl276tKlS5KkX375RZGRkapXr5527dql9evX6+eff1bnzp2NY168eFF///vftWvXLm3atEnW1tZ6/vnnVVRUZDJ3eb91AAAAAAAAAAAAfxTbBx0AAAAA8Fdz5coVTZw4Uenp6WrcuLEkyd/fX9u2bdOsWbPUu3dvSdKECRP0zDPPSJKGDRumtm3b6rfffpO9vb0MBoOxauLtDB48WG3btpUkjRkzRiEhIfr+++9Vq1YtPfroo5KuH8VdMlZqaqqaN29uPJo5MDBQ+/fv1zvvvKPu3bubtcaIiAgNGzbM+HxmZqamTZumli1bSlKpqpPjx49Xnz59NGPGDElSfn6+XnzxRWNimr+/f7lzTZkyReHh4cZnpetHet+pZ5991pjEOHToUE2bNk0ZGRkKCgqSp6enbG1tZTAYjPs1e/Zs/fbbb1q4cKGxGuX06dPVvn17TZ48WVWqVLntnLm5uTIYDLp27Zp+++03Sdffh5sNHTpUI0aMMLm3bt06PfXUUzp48KD8/f1la/t//5mXmpqqUaNGGV//+OOPcnFxKTXuoUOHNHPmTIWHh5scyR4bGysbGxtdvnxZRUVF8vX1NUmMO3jwoJo1a1bmmoKDg419HnvsMcXFxalNmzY6evSo/Pz8VFxcrAULFqhbt26ytr71vw10cHDQ6NGj9dZbb6lXr15lrqE8hw4dkiTVqlXL7GduVvLssWPH1KBBg1v2HTNmjIYNG6Zu3bpJuv7ZHTdunIYMGaLRo0crPz9fnp6eatGihSpUqKDq1asbxzx48KDWrVunHTt2qH79+pKkuXPnGvdSkpo0aaKgoCB9/PHHxqTStLQ0RUdHy2Aw3Pb35ZlnnlGFChU0ZswY45h+fn7KysrSsmXLTN5fR0dHzZkzx5h0u3LlSjk6Oqpdu3ZycnJSjRo1VK9ePZP1h4WFGT+jw4cP16RJk+Th4aFevXpJkkaNGqUPP/xQe/fuVaNGjTR9+nTVq1dPEydONI4xb948+fj46ODBgwoMDNSLL75oMse8efP0yCOPaP/+/apTp47x/q1+62525coVk4qq58+fL+8tBQAAAAAAAAAAKBcVMAEAAID77Pvvv9elS5fUsmVLGQwG47Vw4UKTY3Xr1q1r/HPVqlUlyaQSnrksHefAgQOKiIgwuRcREaFDhw6ZXVWyJPHrxtcHDhwwvk5PT1fz5s3l7e0tJycnde3aVadPnzZWxRswYIDGjx+viIgIjR49Wnv37i13rpIKmPfKjftVckz37fYrLCzMmHwpXd+voqIiY+XM2wkKClJ2drZ27typoUOHKioqSvHx8aX6vfnmm8rOzja5wsPDyx23Z8+eys7O1qxZs3Tx4kUVFxcb286dOyeDwSAHBwcFBQWpSpUqpY67njZtmrKzs7Vu3TrVrl1bc+bMUeXKlU363DjmrbRs2VLVqlVTWlqapOvVFfPz89WjRw+zno+Li5O7u7smT55sVn9L4zNnjNtVEZWknJwcjR071uS73atXLxUUFOjSpUuKjo7W5cuX5e/vr169eunzzz83Vmk8cOCAbG1t9cQTTxjHq1WrVqkqna+99ppxH3/++WetW7fOWCHX3N+XDz74QE888YQeeeQRGQwGffTRR8rPzzeZJzQ01KTiacuWLVWjRg35+/ura9euWrRokfE7W+LG74+NjY3c3d1NKnyWJCSXfKdycnKUkZFhEmtJwmRJvIcOHVJsbKz8/f3l7OwsX19fSSoVryW/dcnJyXJxcTFePj4+ZfYDAAAAAAAAAAC4FRIwAQAAgPvswoULkqQ1a9aYJNLt379fn332mbFfhQoVjH8uSfy6+chdc9yrce6VY8eOqV27dqpbt65WrFih3bt364MPPpAk/f7775KuJ5gdOXJEXbt2VW5ursLDw8s9ftre3v6exnfjfknX9+yP3q+KFSsqICBAderU0aRJk2RjY2NSobCEh4eHAgICTK6S9desWVNHjhzR1atXjf1dXV0VEBAgb2/vUmM5OTkpOztb3377rS5evKivv/5agYGBJn08PT0VEBCgVq1aKS0tTTExMSYJbYGBgSaJtTcquV8yprW1tbp3764FCxaoqKhIaWlpatas2S2rm97I1tZWEyZM0D/+8Q/95z//MeuZG+f/7rvvzH7mZiVr8fPzu23fCxcuaMyYMSbf7dzcXB06dEiVKlWSj4+P8vLyNGPGDNnb26tfv356+umnTd6323n11Vd15MgRZWVl6ZNPPpGfn5+eeuop4/zSrX9fli5dqsGDBysuLk4bN25Udna2evToYfz+lbgxqVi6/pn55ptvtGTJElWtWlWjRo1SWFiYfvnlF2Ofsr4/t/oNunDhgtq3b18qsfjQoUPG483bt2+vM2fOaPbs2fr3v/+tf//735JUKl5LfuuGDx+uc+fOGa8TJ06U2Q8AAAAAAAAAAOBWSMAEAAAA7rPatWvLzs5O+fn5pZLpzK3CVrFiRbOrUVoqODhYmZmZJvcyMzMVGBgoGxsbs8bYvn17qdclxyjv3r1bRUVFSklJUaNGjRQYGFhmQp2Pj4/69OmjlStXKjExUbNnzy5zrrp162rTpk1mxfVHCA4OVk5Oji5evGi8l5mZKWtrawUFBd3RmCNGjNDUqVMtSjSMjY3VhQsXTI5ivxVra2sFBATI39/frCTWBg0a6IknntCECROM91566SWlp6crJyfHpG9RUZGmTZum2rVrKywszHi/R48eOnHihFauXKnPP/9ccXFxZq7uuujoaIWEhJSZnFqeVq1aycPDQ1OmTCmz/cbkwbIUFRXpvffek5+fX6njtsvy+OOPKy8vr9R3OyAgwHjUur29vdq3b6/33ntPW7ZsUVZWlnJzc1WrVi0VFhZq9+7dxvHy8vJKxeju7q7nnntOaWlpmj9/vkkVUXN+XzIzM9WkSRP169dP9erVU0BAgEl1zFuxtbVVixYtNGXKFO3du1fHjh3T5s2bzXq2vP3at2+ffH19S8Xr6Oio06dPKy8vTyNGjFDz5s0VHByss2fP3vF8Jezs7OTs7GxyAQAAAAAAAAAAWMr2QQcAAAAA/NU4OTlp8ODBGjRokIqKivTkk0/q3LlzyszMlLOzs2rUqHHbMXx9fXX06FFlZ2erWrVqcnJykp2d3T2JLzExUfXr19e4ceMUExOjrKwsTZ8+3ezEPul6gteUKVP03HPP6auvvtLy5cu1Zs0aSVJAQICuXr2q999/X+3bt1dmZqZmzpxp8nxCQoLatGmjwMBAnT17VhkZGcYEzpsNHz5coaGh6tevn/r06aOKFSsqIyND0dHR8vDwuPONMNMrr7yi0aNHq1u3bkpKStJ///tfxcfHq2vXrsbjli3VuHFj1a1bVxMnTtT06dON93/99Vf99NNPJn0dHBzk7Oysxo0bKzExUYmJiTp+/LheeOEF+fj4qKCgQHPnzpWVlZUxAfBOJSQk6Pnnn9eQIUPk7e2tQYMGadWqVWrfvr1SUlLUsGFD/fzzz5o4caIOHDig9PR0k2O7/fz8FBkZqd69e8vOzk4vvPCCxTFMmjRJUVFRZvd3dHTUnDlzFB0drQ4dOmjAgAEKCAjQqVOntGzZMuXn52vp0qXG/qdPn9ZPP/2kS5cu6dtvv9W7776rHTt2aM2aNWYlII8aNUrt2rVT9erV1alTJ1lbWysnJ0fffvutxo8fr/nz5+vatWtq2LChHBwc9Mknn8je3l41atSQu7u7Wrdurddff10ffvihbG1tlZCQUGaC7GuvvaZ27drp2rVr6tatm/H+7X5funXrppo1a2rhwoXasGGD/Pz89PHHH2vnzp23rfC5evVqHTlyRE8//bTc3Ny0du1aFRUV3XGisST1799fs2fPVmxsrIYMGaLKlSvr+++/19KlSzVnzhy5ubnJ3d1dH330kapWrar8/HwNGzbsjucDAAAAAAAAAAC4l6iACQAAADwA48aN08iRI5WcnKzg4GC1bt1aa9asMeuIY0l68cUX1bp1azVr1kyPPPKIlixZcs9ie/zxx7Vs2TItXbpUderU0ahRozR27Fh1797d7DESExO1a9cu1atXT+PHj1dqaqoxaS4sLEypqamaPHmy6tSpo0WLFik5Odnk+WvXrql///7GvQkMDCw3ATQwMFAbN25UTk6OGjRooMaNG2vVqlWytb0//97MwcFBGzZs0JkzZ1S/fn116tRJzZs3N0mcvBODBg3SnDlzTI5GHjVqlKpWrWpyDRkyxNg+depULV68WHv27FG7du1Us2ZNRUdHq6ioSFlZWXdd5a9169by8/MzVsGsVKmSNm/erFdffVVvvfWWAgIC1Lp1a9nY2Gj79u1q1KhRqTHi4uJ09uxZvfzyy6pUqZLFMURGRioyMlKFhYVmP9OxY0f961//UoUKFfTyyy+rVq1aio2N1blz5zR+/HiTvi1atFDVqlUVGhqqYcOGKTg4WHv37lWzZs3MmisqKkqrV6/Wxo0bVb9+fTVq1EjTpk0zJla7urpq9uzZioiIUN26dZWenq7/9//+n9zd3SVJaWlp8vLy0jPPPKMXXnhBvXv31qOPPlpqnpI4o6Ki5OXlZdJ2u9+X119/XS+88IJiYmLUsGFDnT59Wv369bvt2lxdXbVy5UpFRkYqODhYM2fO1JIlSxQSEmLW3pTFy8tLmZmZunbtmlq1aqXQ0FAlJCTI1dVV1tbWsra21tKlS7V7927VqVNHgwYN0jvvvHPH8wEAAAAAAAAAANxLVsXFxcUPOggAAAAAAGC+CxcuyNvbW2lpaXdUSRSmzp8/LxcXF4XFz5SNXemKowAAAMCfxe53Xn3QIQAAAADAQ6/k7w3OnTt32wInHEEOAAAAAMD/iKKiIp06dUopKSlydXVVhw4dHnRIAAAAAAAAAAAAf1kcQQ4AAADAbFu3bpXBYCj3epjk5+ffMtb8/Pz7EsetYti6det9ieHPbNGiReXu790cjV2ekJCQcudbtGjRPZ/vZvn5+apSpYoWL16sefPmydaWf1cJAAAAAAAAAADwoPA3NQAAAADMFh4eruzs7Acdhlm8vLxuGauXl9d9ieNWMXh7e9+XGP7MOnTooIYNG5bZVqFChXs+39q1a3X16tUy26pUqXLP57uZr6+viouL//B5AAAAAAAAAAAAcHskYAIAAAAwm729vQICAh50GGaxtbV9KGJ9GGL4M3NycpKTk9N9m69GjRr3bS4AAAAAAAAAAAA83DiCHAAAAAAAAAAAAAAAAAAAwEIkYAIAAAAAAAAAAAAAAAAAAFiII8gBAAAAAAAkfT0+Vs7Ozg86DAAAAAAAAAAA8D+CCpgAAAAAAAAAAAAAAAAAAAAWIgETAAAAAAAAAAAAAAAAAADAQiRgAgAAAAAAAAAAAAAAAAAAWIgETAAAAAAAAAAAAAAAAAAAAAuRgAkAAAAAAAAAAAAAAAAAAGAh2wcdAAAAAAAAwMPg6RFLZGNn/6DDAAAAwENk9zuvPugQAAAAAAAPMSpgAgAAAAAAAAAAAAAAAAAAWIgETAAAAAAAAAAAAAAAAAAAAAuRgAkAAAAAAAAAAAAAAAAAAGAhEjABAAAAAAAAAAAAAAAAAAAsRAImAAAAAAAAAAAAAAAAAACAhUjABAAAAAAAAAAAAAAAAAAAsBAJmAAAAMBfmJWVlb744guLnvniiy8UEBAgGxsbJSQk3HUMvr6+evfdd+96nPJs2bJFVlZW+uWXX+56rKZNm1q85u+++06NGjVSpUqV9Nhjj911DMBf3b38TgMAAAAAAAAAANwNEjABAACAv4CkpKQyk/8KCgrUpk0bi8Z6/fXX1alTJ504cULjxo27RxH+cZo0aaKCggK5uLjc9VgrV660eM2jR4+Wo6Oj8vLytGnTpruOISkpSVZWVrKyspKNjY18fHzUu3dvnTlzxqSfr6+vsd+N16RJk0z6rVixQpGRkXJzc5O9vb2CgoLUs2dP7dmzx9hn/vz5xuetra1VrVo19ejRQydPnjT2uXEOZ2dn1a9fX6tWrSoV/+XLlzV69GgFBgbKzs5OHh4eio6O1r59+4x9QkND1adPnzLX//HHH8vOzk6nTp0qlYhX8jokJETXrl0zec7V1VXz5883a48lac+ePYqOjlaVKlVUqVIl1axZU7169dLBgwclSceOHTNZs5OTk0JCQtS/f38dOnTI7Hlu3tuqVasqJiZG+fn5Jv2aNm1a5vt58z5lZGSoXbt2euSRR1SpUiX97W9/U0xMjL7++muTfsXFxfroo4/UsGFDGQwGubq6Kjw8XO+++64uXbpk0veHH35QxYoVVadOnTLXcGM8Li4uioiI0ObNm83eA0vdy+80AAAAAAAAAADA3SABEwAAAPgL8/T0lJ2dndn9L1y4oJMnTyoqKkpeXl5ycnL6A6O7NypWrChPT09ZWVnd9ViVK1e2eM2HDx/Wk08+qRo1asjd3f2uY5CkkJAQFRQUKD8/X2lpaVq/fr369u1bqt/YsWNVUFBgcsXHxxvbhw4dqpiYGD322GP68ssvlZeXp8WLF8vf31/Dhw83GcvZ2VkFBQX64YcfNHv2bK1bt05du3Y16ZOWlqaCggLt2rVLERER6tSpk3Jzc43tV65cUYsWLTRv3jyNHz9eBw8e1Nq1a1VYWKiGDRtq+/btkqS4uDgtXbpUly9fLrWmtLQ0dejQQR4eHuXuz5EjR7Rw4ULzNrMMq1evVqNGjXTlyhUtWrRIBw4c0CeffCIXFxeNHDnSpG96eroKCgqUk5OjiRMn6sCBAwoLC7Mo2bZkb3/88UetWLFCeXl5io6OLtWvV69epd7PKVOmGNtnzJih5s2by93dXZ9++qny8vL0+eefq0mTJho0aJDJWF27dlVCQoI6duyojIwMZWdna+TIkVq1apU2btxo0nf+/Pnq3Lmzzp8/r3//+99lrqHkvc/MzJSHh4fatWunI0eOmL0HlriX32kAAAAAAAAAAIC7QQImAAAA8D+gqKhIycnJ8vPzk729vcLCwvTZZ59J+r+qf5s2bVJ4eLgcHBzUpEkT5eXlSbqePDVmzBjl5OQYq9SVVAK88Qjykop+K1euVLNmzeTg4KCwsDBlZWUZ5ylJPoyMjJSVlZW2bNki6XoVxZCQENnZ2cnX11cpKSkWre/XX39VbGysHB0d5e3trQ8++MCkPTU1VaGhoXJ0dJSPj4/69eunCxcuGNuPHz+u9u3by83NTY6OjgoJCdHatWtN9ufG44ozMzPVtGlTOTg4yM3NTVFRUTp79uxt47z5CHJfX19NnDhRPXv2lJOTk6pXr66PPvrI2G5lZaXdu3dr7NixsrKyUlJSkiQpNzdXkZGRsre3l7u7u3r37m2yntuxtbWVp6envL291aJFC0VHR+urr74q1c/JyUmenp4ml6OjoyRp+/btmjJlilJTU5WamqqnnnpK1atX1xNPPKERI0Zo3bp1JmNZWVnJ09NTXl5eatOmjQYMGKD09HSTJElXV1d5enoqMDBQ48aNU2FhoTIyMozt7777rrKysrR69Wp17txZNWrUUIMGDbRixQoFBwcrLi5OxcXF6tKliy5fvqwVK1aYxHD06FFt2bJFcXFxt9yf+Ph4jR49WleuXDF7T0tcunRJPXr00LPPPqsvv/xSLVq0kJ+fnxo2bKipU6dq1qxZJv3d3d3l6ekpf39/dezYUenp6WrYsKHi4uJKVeEsT8neVq1aVU2aNFFcXJx27Nih8+fPm/RzcHAo9X46OztLkvLz85WQkKCEhAQtWLBAkZGRqlGjhurWrauBAwdq165dxnGWLVumRYsWacmSJXrrrbdUv359+fr6qmPHjtq8ebOaNWtm7FtcXKy0tDR17dpVL7/8subOnVvmGkre+zp16ujDDz/U5cuXy/xM3qxp06aKj49XQkKC3NzcVKVKFc2ePVsXL15Ujx495OTkpICAAJPP483f6fnz58vV1VUbNmxQcHCwDAaDWrdurYKCArP2HwAAAAAAAAAA4E6RgAkAAAD8D0hOTtbChQs1c+ZM7du3T4MGDVKXLl30z3/+09jn7bffVkpKinbt2iVbW1v17NlTkhQTE6PExERj1cSCggLFxMSUO9fbb7+twYMHKzs7W4GBgYqNjVVhYaFJUueKFStUUFCgJk2aaPfu3ercubNeeukl5ebmKikpSSNHjrTouOd33nlHYWFh2rNnj4YNG6aBAweaJG9ZW1vrvffe0759+7RgwQJt3rxZQ4YMMbb3799fV65c0ddff63c3FxNnjxZBoOhzLmys7PVvHlz1a5dW1lZWdq2bZvat29vdrLczVJSUhQeHq49e/aoX79+6tu3r3GfCgoKFBISosTERBUUFGjw4MG6ePGioqKi5Obmpp07d2r58uVKT0/XG2+8cUfzHzt2TBs2bFDFihUtem7JkiUyGAzq169fme23qy5ob2+voqIiFRYWlmorLCw0JurdGNfixYvVsmVLhYWFmfS3trbWoEGDtH//fuXk5MjDw0MdO3bUvHnzTPrNnz9f1apVU6tWrW4ZW0JCggoLC/X+++/fsl9ZNmzYoFOnTpl8vm7k6up6y+etra01cOBAHT9+XLt377Z4/pMnT+rzzz+XjY2NbGxszH5uxYoVunr1arlx3/h+Llq0SEFBQerYsWOZ/W482jsjI0OXLl1SixYt1KVLFy1dulQXL168ZSz29vaSpN9//92s2BcsWCAPDw/t2LFD8fHx6tu3r6Kjo9WkSRN98803atWqlbp27VrqaPQbXbp0SVOnTtXHH3+sr7/+Wvn5+Ro8eHC5/a9cuaLz58+bXAAAAAAAAAAAAJYiARMAAAB4yF25ckUTJ07UvHnzFBUVJX9/f3Xv3l1dunQxqcY3YcIEPfPMM6pdu7aGDRumf/3rX/rtt99kb28vg8FgrJro6elpTJAqy+DBg9W2bVsFBgZqzJgxOn78uL7//ntVrFhRjz76qKTrR3F7enqqYsWKSk1NVfPmzTVy5EgFBgaqe/fueuONN/TOO++YvcaIiAgNGzZMgYGBio+PV6dOnTRt2jRje0JCgpo1ayZfX19FRkZq/PjxWrZsmbE9Pz9fERERCg0Nlb+/v9q1a6enn366zLmmTJmi8PBwzZgxQ2FhYQoJCdEbb7xxyyOtb+XZZ59Vv379FBAQoKFDh8rDw8NY9dHT01O2trYyGAzy9PSUwWDQ4sWL9dtvv2nhwoWqU6eOIiMjNX36dH388cf6+eefzZozNzdXBoNB9vb28vPz0759+zR06NBS/YYOHSqDwWBybd26VZJ08OBB+fv7y9bW1tg/NTXVpO+5c+fKnP/QoUOaOXOmwsPDTY5kj42NlcFgkJ2dnQYNGiRfX1917tzZ2H7w4EEFBweXOWbJ/YMHD0q6fgz5li1bdPToUUnXKzEuWLBA3bp1k7X1rf9T1sHBQaNHj1ZycnK5ayjPoUOHJEm1atWy6LkblTx77Ngxs/qfO3dOBoNBjo6OqlKlijIyMtS/f39jtdISM2bMKPV+Llq0SNL1fXN2dpanp6ex/4oVK0z6lhwHf+jQIQUFBZkV29y5c/XSSy/JxsZGderUkb+/v5YvX15u/0uXLmnEiBGysbHRM888Y9YcYWFhGjFihGrWrKnhw4erUqVK8vDwUK9evVSzZk2NGjVKp0+f1t69e8sd4+rVq8bP5OOPP6433njjlsfAJycny8XFxXj5+PiYFSsAAAAAAAAAAMCNSMAEAAAAHnLff/+9Ll26pJYtW5okUy1cuFCHDx829qtbt67xz1WrVpV0vZqepSwd58CBA4qIiDC5FxERoUOHDpldVbJx48alXh84cMD4Oj09Xc2bN5e3t7ecnJzUtWtXnT592lgRb8CAARo/frwiIiI0evToWyZqlVTAvFdu3K+So6Rvt19hYWEmyXUREREqKioyVs68naCgIGVnZ2vnzp0aOnSooqKiFB8fX6rfm2++qezsbJMrPDy83HF79uyp7OxszZo1SxcvXlRxcbGxrSRJ0MHBQUFBQapSpYox+a/EtGnTlJ2drXXr1ql27dqaM2eOKleubNLnxjFvpWXLlqpWrZrS0tIkSZs2bVJ+fr569Ohh1vNxcXFyd3fX5MmTzepvaXzmjHG7KqIlnJyclJ2drV27diklJUWPP/64JkyYUKrfK6+8Uur97NChg7H95vmioqKUnZ2tNWvW6OLFi8bvo7lr/OWXX7Ry5Up16dLFeK9Lly5lHkNeknzr5OSkFStWaO7cuSbfjVu5sZ+NjY3c3d0VGhpqvFelShVJt/4dcnBw0N/+9jfj66pVq96y//Dhw3Xu3DnjdeLECbNiBQAAAAAAAAAAuJHt7bsAAAAAeJAuXLggSVqzZo28vb1N2uzs7IxJmBUqVDDeL0nEKioqsni+ezXOvXLs2DG1a9dOffv21YQJE1S5cmVt27ZNcXFx+v333+Xg4KDXXntNUVFRWrNmjTZu3Kjk5GSlpKSUmZR4q+qfd+LG/ZKu79kfvV8VK1ZUQECAJGnSpElq27atxowZo3Hjxpn08/DwMPa7Wc2aNbVt2zZdvXrVuAZXV1e5urrqhx9+KNXfyclJ33zzjaytrVW1atUy99HT01MBAQEKCAhQWlqann32We3fv99YOTUwMNAksfZGJfcDAwMlXT/Ku3v37lqwYIGSkpKUlpamZs2ayd/f35wtkq2trSZMmGCsyGqukvm/++67UonB5ipZi5+fn1n9ra2tje9TcHCwDh8+rL59++rjjz826efi4nLL9/PcuXP66aefjFUwDQaDAgICTKqcStfX+N133902rpJqrQ0bNjTeKy4uVlFRkQ4ePGjcK+l68m2LFi3k4uKiRx55xKx1lyjrO2Tp71BZY9wq0dTOzk52dnYWxQkAAAAAAAAAAHAzKmACAAAAD7natWvLzs5O+fn5xuS2ksvcY3MrVqxodjVKSwUHByszM9PkXmZmpgIDA2VjY2PWGNu3by/1uuRI6t27d6uoqEgpKSlq1KiRAgMD9Z///KfUGD4+PurTp49WrlypxMREzZ49u8y56tate8ujif9owcHBysnJ0cWLF433MjMzZW1tbfax0DcbMWKEpk6dWua+lCc2NlYXLlzQjBkzzOpfkiTo7+9vVhJrgwYN9MQTT5hUcnzppZeUnp6unJwck75FRUWaNm2aateurbCwMOP9Hj166MSJE1q5cqU+//xzxcXFmbm666KjoxUSEqIxY8aY/UyrVq3k4eGhKVOmlNn+yy+/3PL5oqIivffee/Lz81O9evUsCddo2LBh+vTTT/XNN9+Y/UynTp1UoUIFsyp+vvzyyzp48KBWrVpVqq24uNh4bPvcuXOVmJhoUnEzJydHTz31lObNm2fyXEnyraXJlwAAAAAAAAAAAP/LqIAJAAAAPOScnJw0ePBgDRo0SEVFRXryySd17tw5ZWZmytnZWTVq1LjtGL6+vjp69Kiys7NVrVo1OTk53bPqb4mJiapfv77GjRunmJgYZWVlafr06WYn9knXExCnTJmi5557Tl999ZWWL1+uNWvWSJICAgJ09epVvf/++2rfvr0yMzM1c+ZMk+cTEhLUpk0bBQYG6uzZs8rIyDAmcN5s+PDhCg0NVb9+/dSnTx9VrFhRGRkZio6OloeHx51vhJleeeUVjR49Wt26dVNSUpL++9//Kj4+Xl27djUetWypxo0bq27dupo4caKmT59uvP/rr7/qp59+Munr4OAgZ2dnNW7cWImJiUpMTNTx48f1wgsvyMfHRwUFBZo7d66srKxkbX13/2YvISFBzz//vIYMGSJvb28NGjRIq1atUvv27ZWSkqKGDRvq559/1sSJE3XgwAGlp6ebHKPt5+enyMhI9e7dW3Z2dnrhhRcsjmHSpEmKiooyu7+jo6PmzJmj6OhodejQQQMGDFBAQIBOnTqlZcuWKT8/X0uXLjX2P336tH766SddunRJ3377rd59913t2LFDa9asMTsB+WY+Pj56/vnnNWrUKK1evdp4/9KlS6XeTzs7O7m5ual69epKSUnRwIEDdebMGXXv3l1+fn46c+aMPvnkE0kyxtO5c2d9/vnnio2N1YgRI9SqVSs98sgjys3N1bRp0xQfHy9fX1998803WrRokWrVqmUyZ2xsrMaOHavx48eXqq4JAAAAAAAAAADwV0IFTAAAAOB/wLhx4zRy5EglJycrODhYrVu31po1a8w+4vjFF19U69at1axZMz3yyCNasmTJPYvt8ccf17Jly7R06VLVqVNHo0aN0tixY9W9e3ezx0hMTNSuXbtUr149jR8/XqmpqcakubCwMKWmpmry5MmqU6eOFi1apOTkZJPnr127pv79+xv3JjAwsNwE0MDAQG3cuFE5OTlq0KCBGjdurFWrVt23RDIHBwdt2LBBZ86cUf369dWpUyc1b97cJHHyTgwaNEhz5szRiRMnjPdGjRqlqlWrmlxDhgwxtk+dOlWLFy/Wnj171K5dO9WsWVPR0dEqKipSVlaWnJ2d7yqm1q1by8/Pz1gFs1KlStq8ebNeffVVvfXWWwoICFDr1q1lY2Oj7du3q1GjRqXGiIuL09mzZ/Xyyy+rUqVKFscQGRmpyMhIFRYWmv1Mx44d9a9//UsVKlTQyy+/rFq1aik2Nlbnzp3T+PHjTfq2aNFCVatWVWhoqIYNG6bg4GDt3btXzZo1szjWGw0aNEhr1qzRjh07jPdmz55d6v2MjY01tsfHx2vjxo3673//q06dOqlmzZp69tlndfToUa1fv16hoaGSrh/PvXjxYqWmpuqLL77QM888o7p16yopKUkdO3ZUVFSU5s6dq9q1a5dKvpSk559/XidPntTatWvvao0AAAAAAAAAAAD/66yKi4uLH3QQAAAAAAAAD8r58+fl4uKisPiZsrGzf9DhAAAA4CGy+51XH3QIAAAAAID7rOTvDc6dO3fbgiVUwAQAAAAAAAAAAAAAAAAAALAQCZgAAAAA/jBbt26VwWAo93qY5Ofn3zLW/Pz8+xLHrWLYunXrfYnhz2zRokXl7m9ISMg9ny8kJKTc+RYtWnTP53uYPCzfKQAAAAAAAAAAgD+K7YMOAAAAAMCfV3h4uLKzsx90GGbx8vK6ZaxeXl73JY5bxeDt7X1fYvgz69Chgxo2bFhmW4UKFe75fGvXrtXVq1fLbKtSpco9n+9h8rB8pwAAAAAAAAAAAP4oJGACAAAA+MPY29srICDgQYdhFltb24ci1ochhj8zJycnOTk53bf5atSocd/metg8LN8pAAAAAAAAAACAPwpHkAMAAAAAAAAAAAAAAAAAAFiIBEwAAAAAAAAAAAAAAAAAAAALcQQ5AAAAAACApK/Hx8rZ2flBhwEAAAAAAAAAAP5HUAETAAAAAAAAAAAAAAAAAADAQiRgAgAAAAAAAAAAAAAAAAAAWIgETAAAAAAAAAAAAAAAAAAAAAuRgAkAAAAAAAAAAAAAAAAAAGAhEjABAAAAAAAAAAAAAAAAAAAsZPugAwAAAAAAAHgYPD1iiWzs7B90GAAAAH8Ku9959UGHAAAAAADAH44KmAAAAAAAAAAAAAAAAAAAABYiARMAAAAAAAAAAAAAAAAAAMBCJGACAAAAAAAAAAAAAAAAAABYiARMAAAAAAAAAAAAAAAAAAAAC5GACQAAAAAAAAAAAAAAAAAAYCESMAEAAAAAAAAAAAAAAAAAACxEAiYAAAAA4J6ysrLSF198YdEzX3zxhQICAmRjY6OEhIS7jsHX11fvvvvuXY9Tni1btsjKykq//PLLXY/VtGlTi9f83XffqVGjRqpUqZIee+yxu44BAAAAAAAAAAAAliMBEwAAAABwR5KSkspM/isoKFCbNm0sGuv1119Xp06ddOLECY0bN+4eRfjHadKkiQoKCuTi4nLXY61cudLiNY8ePVqOjo7Ky8vTpk2b7jqGpKQkWVlZycrKSjY2NvLx8VHv3r115swZk36+vr7GfjdekyZNMum3YsUKRUZGys3NTfb29goKClLPnj21Z88ek36///67pkyZorCwMDk4OMjDw0MRERFKS0vT1atXTfpmZWXJxsZGbdu2LRX/sWPHTOJxd3dXq1atSs0HAAAAAAAAAABwL5GACQAAAAC4pzw9PWVnZ2d2/wsXLujkyZOKioqSl5eXnJyc/sDo7o2KFSvK09NTVlZWdz1W5cqVLV7z4cOH9eSTT6pGjRpyd3e/6xgkKSQkRAUFBcrPz1daWprWr1+vvn37luo3duxYFRQUmFzx8fHG9qFDhyomJkaPPfaYvvzyS+Xl5Wnx4sXy9/fX8OHDjf1+//13RUVFadKkSerdu7f+9a9/aceOHerfv7/ef/997du3z2TeuXPnKj4+Xl9//bX+85//lLmG9PR0FRQUaMOGDbpw4YLatGlzT6qUAgAAAAAAAAAAlIUETAAAAAD4iyoqKlJycrL8/Pxkb2+vsLAwffbZZ5L+74jtTZs2KTw8XA4ODmrSpIny8vIkSfPnz9eYMWOUk5NjrDo4f/58SaZHkJdUJly5cqWaNWsmBwcHhYWFKSsryzhPSfJhZGSkrKystGXLFknXqyiGhITIzs5Ovr6+SklJsWh9v/76q2JjY+Xo6Chvb2998MEHJu2pqakKDQ2Vo6OjfHx81K9fP124cMHYfvz4cbVv315ubm5ydHRUSEiI1q5da7I/Nyb3ZWZmqmnTpnJwcJCbm5uioqJ09uzZ28Z58xHkvr6+mjhxonr27CknJydVr15dH330kbHdyspKu3fv1tixY2VlZaWkpCRJUm5uriIjI2Vvby93d3f17t3bZD23Y2trK09PT3l7e6tFixaKjo7WV199Vaqfk5OTPD09TS5HR0dJ0vbt2zVlyhSlpqYqNTVVTz31lKpXr64nnnhCI0aM0Lp164zjvPvuu/r666+1adMm9e/fX4899pj8/f318ssv69///rdq1qxp7HvhwgV9+umn6tu3r9q2bWv8rN3M3d1dnp6eCg8P19SpU/Xzzz/r3//+t9l7AAAAAAAAAAAAYAkSMAEAAADgLyo5OVkLFy7UzJkztW/fPg0aNEhdunTRP//5T2Oft99+WykpKdq1a5dsbW3Vs2dPSVJMTIwSExONVRMLCgoUExNT7lxvv/22Bg8erOzsbAUGBio2NlaFhYUmSZ0rVqxQQUGBmjRpot27d6tz58566aWXlJubq6SkJI0cObLcxLuyvPPOOwoLC9OePXs0bNgwDRw40CSh0NraWu+995727dunBQsWaPPmzRoyZIixvX///rpy5Yq+/vpr5ebmavLkyTIYDGXOlZ2drebNm6t27drKysrStm3b1L59e127ds3seG+UkpKi8PBw7dmzR/369VPfvn2N+1RQUKCQkBAlJiaqoKBAgwcP1sWLFxUVFSU3Nzft3LlTy5cvV3p6ut544407mv/YsWPasGGDKlasaNFzS5YskcFgUL9+/cpsv7Fi6KJFi9SiRQvVq1evVL8KFSoYkzoladmyZapVq5aCgoLUpUsXzZs3T8XFxbeMxd7eXtL1Sps3u3Llis6fP29yAQAAAAAAAAAAWMr2QQcAAAAAALj/rly5ookTJyo9PV2NGzeWJPn7+2vbtm2aNWuWevfuLUmaMGGCnnnmGUnSsGHD1LZtW/3222+yt7eXwWAwVk28ncGDB6tt27aSpDFjxigkJETff/+9atWqpUcffVTS9aO4S8ZKTU1V8+bNNXLkSElSYGCg9u/fr3feeUfdu3c3a40REREaNmyY8fnMzExNmzZNLVu2lKRSVSfHjx+vPn36aMaMGZKk/Px8vfjiiwoNDTXuT3mmTJmi8PBw47PS9SO979Szzz5rTGIcOnSopk2bpoyMDAUFBcnT01O2trYyGAzG/Zo9e7Z+++03LVy40Ji4OH36dLVv316TJ09WlSpVbjtnbm6uDAaDrl27pt9++03S9ffhZkOHDtWIESNM7q1bt05PPfWUDh48KH9/f9na/t//bkhNTdWoUaOMr3/88Ue5uLjo0KFDatq0qVn7MXfuXHXp0kWS1Lp1a507d07//Oc/y33+l19+0bhx42QwGNSgQYNS7cnJyRozZoxZcwMAAAAAAAAAAJSHCpgAAAAA8Bf0/fff69KlS2rZsqUMBoPxWrhwoQ4fPmzsV7duXeOfq1atKkk6efKkxfNZOs6BAwcUERFhci8iIkKHDh0yu6pkSWLpja8PHDhgfJ2enq7mzZvL29tbTk5O6tq1q06fPq1Lly5JkgYMGKDx48crIiJCo0eP1t69e8udq6QC5r1y435ZWVnJ09PztvsVFhZmUjUyIiJCRUVFxsqZtxMUFKTs7Gzt3LlTQ4cOVVRUlOLj40v1e/PNN5WdnW1yhYeHlztuz549lZ2drVmzZunixYvGypW3q2BZIi8vTzt27FBsbKyk60elx8TEaO7cuaX6NmnSRAaDQW5ubsrJydGnn35aZvLp8OHDde7cOeN14sQJs2IBAAAAAAAAAAC4ERUwAQAAAOAv6MKFC5KkNWvWyNvb26TNzs7OmIRZoUIF4/2S46OLioosnu9ejXOvHDt2TO3atVPfvn01YcIEVa5cWdu2bVNcXJx+//13OTg46LXXXlNUVJTWrFmjjRs3Kjk5WSkpKWUmJZYcd32v3Lhf0vU9+6P3q2LFigoICJAkTZo0SW3bttWYMWM0btw4k34eHh7GfjerWbOmtm3bpqtXrxrX4OrqKldXV/3www8mfQMDA/Xdd9/dNq65c+eqsLBQXl5exnvFxcWys7PT9OnT5eLiYrz/6aefqnbt2nJ3d5erq2u5Y9rZ2cnOzu62cwMAAAAAAAAAANwKFTABAAAA4C+odu3asrOzU35+vgICAkwuHx8fs8aoWLGi2dUoLRUcHKzMzEyTe5mZmQoMDJSNjY1ZY2zfvr3U6+DgYEnS7t27VVRUpJSUFDVq1EiBgYH6z3/+U2oMHx8f9enTRytXrlRiYqJmz55d5lx169bVpk2bzIrrjxAcHKycnBxdvHjReC8zM1PW1tYKCgq6ozFHjBihqVOnlrkv5YmNjdWFCxdMjmIvz8svv6z09HTt2bOnVNvVq1d18eJFFRYWauHChUpJSTGpuJmTkyMvLy8tWbLE5DkfHx/97W9/u2XyJQAAAAAAAAAAwL1CBUwAAAAA+AtycnLS4MGDNWjQIBUVFenJJ5/UuXPnlJmZKWdnZ9WoUeO2Y/j6+uro0aPKzs5WtWrV5OTkdM+qCiYmJqp+/foaN26cYmJilJWVpenTp5uV2FciMzNTU6ZM0XPPPaevvvpKy5cv15o1ayRJAQEBunr1qt5//321b99emZmZmjlzpsnzCQkJatOmjQIDA3X27FllZGQYEzhvNnz4cIWGhqpfv37q06ePKlasqIyMDEVHR8vDw+PON8JMr7zyikaPHq1u3bopKSlJ//3vfxUfH6+uXbuWeQS3ORo3bqy6detq4sSJmj59uvH+r7/+qp9++smkr4ODg5ydndW4cWMlJiYqMTFRx48f1wsvvCAfHx8VFBRo7ty5srKykrX19X8LmpCQoDVr1qh58+YaN26cnnzySTk5OWnXrl2aPHmy5s6dq2PHjuns2bOKi4szqXQpSS+++KLmzp2rPn363NH6AAAAAAAAAAAA7hYVMAEAAADgL2rcuHEaOXKkkpOTFRwcrNatW2vNmjXy8/Mz6/kXX3xRrVu3VrNmzfTII4+UqkZ4Nx5//HEtW7ZMS5cuVZ06dTRq1CiNHTtW3bt3N3uMxMRE7dq1S/Xq1dP48eOVmpqqqKgoSVJYWJhSU1M1efJk1alTR4sWLVJycrLJ89euXVP//v2NexMYGFhuAmhgYKA2btyonJwcNWjQQI0bN9aqVatka3t//t2jg4ODNmzYoDNnzqh+/frq1KmTmjdvbpI4eScGDRqkOXPm6MSJE8Z7o0aNUtWqVU2uIUOGGNunTp2qxYsXa8+ePWrXrp1q1qyp6OhoFRUVKSsrS87OzpKuHwP+1VdfaciQIZo1a5YaNWqk+vXr67333tOAAQNUp04dzZ07Vy1atCiVfCld//zt2rVLe/fuvas1AgAAAAAAAAAA3Cmr4uLi4gcdBAAAAAAAwINy/vx5ubi4KCx+pmzs7B90OAAAAH8Ku9959UGHAAAAAADAHSn5e4Nz584ZC0uUhwqYAAAAAAAAAAAAAAAAAAAAFiIBEwAAAADwP2Xr1q0yGAzlXg+T/Pz8W8aan59/X+K4VQxbt269LzEAAAAAAAAAAAD82dg+6AAAAAAAALBEeHi4srOzH3QYZvHy8rplrF5eXvcljlvF4O3tfV9iAAAAAAAAAAAA+LMhARMAAAAA8D/F3t5eAQEBDzoMs9ja2j4UsT4MMQAAAAAAAAAAAPzZcAQ5AAAAAAAAAAAAAAAAAACAhaiACQAAAAAAIOnr8bFydnZ+0GEAAAAAAAAAAID/EVTABAAAAAAAAAAAAAAAAAAAsBAJmAAAAAAAAAAAAAAAAAAAABYiARMAAAAAAAAAAAAAAAAAAMBCJGACAAAAAAAAAAAAAAAAAABYiARMAAAAAAAAAAAAAAAAAAAAC5GACQAAAAAAAAAAAAAAAAAAYCHbBx0AAAAAAADAw+DpEUtkY2f/oMMAAAD4U9j9zqsPOgQAAAAAAP5wVMAEAAAAAAAAAAAAAAAAAACwEAmYAAAAAAAAAAAAAAAAAAAAFiIBEwAAAAAAAAAAAAAAAAAAwEIkYAIAAAAAAAAAAAAAAAAAAFiIBEwAAAAAAAAAAAAAAAAAAAALkYAJAAAAAAAAAAAAAAAAAABgIRIwAQAAgD8JKysrffHFFxY988UXXyggIEA2NjZKSEi46xh8fX317rvv3vU45dmyZYusrKz0yy+/3PVYTZs2tXjN3333nRo1aqRKlSrpscceu+sYAAAAAAAAAAAAAPzvIgETAAAA+B+TlJRUZvJfQUGB2rRpY9FYr7/+ujp16qQTJ05o3Lhx9yjCP06TJk1UUFAgFxeXux5r5cqVFq959OjRcnR0VF5enjZt2nTXMSQlJcnKykpWVlaysbGRj4+PevfurTNnzpj08/X1Nfa78Zo0aZJJvxUrVigyMlJubm6yt7dXUFCQevbsqT179hj7zJ8/3/i8tbW1qlWrph49eujkyZPGPjfO4ezsrPr162vVqlWl4r98+bJGjx6twMBA2dnZycPDQ9HR0dq3b5+xT2hoqPr06VPm+j/++GPZ2dnp1KlTpZJrS16HhITo2rVrJs+5urpq/vz5Zu2xJO3Zs0fR0dGqUqWKKlWqpJo1a6pXr146ePCgJOnYsWMma3ZyclJISIj69++vQ4cOmT3PzXtbtWpVxcTEKD8/36Rf06ZNy3w/b96njIwMtWvXTo888ogqVaqkv/3tb4qJidHXX39t0q+4uFgfffSRGjZsKIPBIFdXV4WHh+vdd9/VpUuXTPr+8MMPqlixourUqVPmGm6Mx8XFRREREdq8ebPZewAAAAAAAAAAAPBXQgImAAAA8Cfh6ekpOzs7s/tfuHBBJ0+eVFRUlLy8vOTk5PQHRndvVKxYUZ6enrKysrrrsSpXrmzxmg8fPqwnn3xSNWrUkLu7+13HIEkhISEqKChQfn6+0tLStH79evXt27dUv7Fjx6qgoMDkio+PN7YPHTpUMTExeuyxx/Tll18qLy9Pixcvlr+/v4YPH24ylrOzswoKCvTDDz9o9uzZWrdunbp27WrSJy0tTQUFBdq1a5ciIiLUqVMn5ebmGtuvXLmiFi1aaN68eRo/frwOHjyotWvXqrCwUA0bNtT27dslSXFxcVq6dKkuX75cak1paWnq0KGDPDw8yt2fI0eOaOHCheZtZhlWr16tRo0a6cqVK1q0aJEOHDigTz75RC4uLho5cqRJ3/T0dBUUFCgnJ0cTJ07UgQMHFBYWZlGybcne/vjjj1qxYoXy8vIUHR1dql+vXr1KvZ9Tpkwxts+YMUPNmzeXu7u7Pv30U+Xl5enzzz9XkyZNNGjQIJOxunbtqoSEBHXs2FEZGRnKzs7WyJEjtWrVKm3cuNGk7/z589W5c2edP39e//73v8tcQ8l7n5mZKQ8PD7Vr105Hjhwxew8AAAAAAAAAAAD+KkjABAAAAO6zoqIiJScny8/PT/b29goLC9Nnn30m6f+q/m3atEnh4eFycHBQkyZNlJeXJ+l68tSYMWOUk5NjrFJXUgnwxiPISyr6rVy5Us2aNZODg4PCwsKUlZVlnKck+TAyMlJWVlbasmWLpOtVFENCQmRnZydfX1+lpKRYtL5ff/1VsbGxcnR0lLe3tz744AOT9tTUVIWGhsrR0VE+Pj7q16+fLly4YGw/fvy42rdvLzc3Nzk6OiokJERr16412Z8bjyDPzMxU06ZN5eDgIDc3N0VFRens2bO3jfPmI8h9fX01ceJE9ezZU05OTqpevbo++ugjY7uVlZV2796tsWPHysrKSklJSZKk3NxcRUZGyt7eXu7u7urdu7fJem7H1tZWnp6e8vb2VosWLRQdHa2vvvqqVD8nJyd5enqaXI6OjpKk7du3a8qUKUpNTVVqaqqeeuopVa9eXU888YRGjBihdevWmYxlZWUlT09PeXl5qU2bNhowYIDS09NNkiRdXV3l6empwMBAjRs3ToWFhcrIyDC2v/vuu8rKytLq1avVuXNn1ahRQw0aNNCKFSsUHBysuLg4FRcXq0uXLrp8+bJWrFhhEsPRo0e1ZcsWxcXF3XJ/4uPjNXr0aF25csXsPS1x6dIl9ejRQ88++6y+/PJLtWjRQn5+fmrYsKGmTp2qWbNmmfR3d3eXp6en/P391bFjR6Wnp6thw4aKi4srVYWzPCV7W7VqVTVp0kRxcXHasWOHzp8/b9LPwcGh1Pvp7OwsScrPz1dCQoISEhK0YMECRUZGqkaNGqpbt64GDhyoXbt2GcdZtmyZFi1apCVLluitt95S/fr15evrq44dO2rz5s1q1qyZsW9xcbHS0tLUtWtXvfzyy5o7d26Zayh57+vUqaMPP/xQly9fLvMzebOmTZsqPj5eCQkJcnNzU5UqVTR79mxdvHhRPXr0kJOTkwICAkp9Hr/99lu1adNGBoNBVapUUdeuXXXq1Clj+/r16/Xkk0/K1dVV7u7uateunQ4fPmxsv93vHQAAAAAAAAAAwB+FBEwAAADgPktOTtbChQs1c+ZM7du3T4MGDVKXLl30z3/+09jn7bffVkpKinbt2iVbW1v17NlTkhQTE6PExERj1cSCggLFxMSUO9fbb7+twYMHKzs7W4GBgYqNjVVhYaFJUueKFStUUFCgJk2aaPfu3ercubNeeukl5ebmKikpSSNHjrTouOd33nlHYWFh2rNnj4YNG6aBAweaJG9ZW1vrvffe0759+7RgwQJt3rxZQ4YMMbb3799fV65c0ddff63c3FxNnjxZBoOhzLmys7PVvHlz1a5dW1lZWdq2bZvat29vdrLczVJSUhQeHq49e/aoX79+6tu3r3GfCgoKFBISosTERBUUFGjw4MG6ePGioqKi5Obmpp07d2r58uVKT0/XG2+8cUfzHzt2TBs2bFDFihUtem7JkiUyGAzq169fme23qxhqb2+voqIiFRYWlmorLCw0JurdGNfixYvVsmVLhYWFmfS3trbWoEGDtH//fuXk5MjDw0MdO3bUvHnzTPrNnz9f1apVU6tWrW4ZW0JCggoLC/X+++/fsl9ZNmzYoFOnTpl8vm7k6up6y+etra01cOBAHT9+XLt377Z4/pMnT+rzzz+XjY2NbGxszH5uxYoVunr1arlx3/h+Llq0SEFBQerYsWOZ/VxcXIyvMzIydOnSJbVo0UJdunTR0qVLdfHixVvGYm9vL0n6/fffzYp9wYIF8vDw0I4dOxQfH6++ffsqOjpaTZo00TfffKNWrVqpa9euxqPRf/nlF0VGRqpevXratWuX1q9fr59//lmdO3c2jnnx4kX9/e9/165du7Rp0yZZW1vr+eefV1FRkcnc5f3eleXKlSs6f/68yQUAAAAAAAAAAGApEjABAACA++jKlSuaOHGi5s2bp6ioKPn7+6t79+7q0qWLSTW+CRMm6JlnnlHt2rU1bNgw/etf/9Jvv/0me3t7GQwGY9VET09PY4JUWQYPHqy2bdsqMDBQY8aM0fHjx/X999+rYsWKevTRRyVdP4rb09NTFStWVGpqqpo3b66RI0cqMDBQ3bt31xtvvKF33nnH7DVGRERo2LBhCgwMVHx8vDp16qRp06YZ2xMSEtSsWTP5+voqMjJS48eP17Jly4zt+fn5ioiIUGhoqPz9/dWuXTs9/fTTZc41ZcoUhYeHa8aMGQoLC1NISIjeeOONWx5pfSvPPvus+vXrp4CAAA0dOlQeHh7Gqo+enp6ytbWVwWCQp6enDAaDFi9erN9++00LFy5UnTp1FBkZqenTp+vjjz/Wzz//bNacubm5MhgMsre3l5+fn/bt26ehQ4eW6jd06FAZDAaTa+vWrZKkgwcPyt/fX7a2tsb+qampJn3PnTtX5vyHDh3SzJkzFR4ebnIke2xsrAwGg+zs7DRo0CD5+vqaJMUdPHhQwcHBZY5Zcv/gwYOSrh9DvmXLFh09elTS9UqMCxYsULdu3WRtfev/LHVwcNDo0aOVnJxc7hrKc+jQIUlSrVq1LHruRiXPHjt2zKz+586dk8FgkKOjo6pUqaKMjAz179/fWK20xIwZM0q9n4sWLZJ0fd+cnZ3l6elp7L9ixQqTviXHwR86dEhBQUFmxTZ37ly99NJLsrGxUZ06deTv76/ly5eX2//SpUsaMWKEbGxs9Mwzz5g1R1hYmEaMGKGaNWtq+PDhqlSpkjw8PNSrVy/VrFlTo0aN0unTp7V3715J0vTp01WvXj1NnDhRtWrVUr169TRv3jxlZGQYPz8vvviiXnjhBQUEBOixxx7TvHnzlJubq/3795vMXd7vXVmSk5Pl4uJivHx8fMxaHwAAAAAAAAAAwI1IwAQAAADuo++//16XLl1Sy5YtTZKpFi5caHKkbt26dY1/rlq1qqTr1fQsZek4Bw4cUEREhMm9iIgIHTp0yOyqko0bNy71+sCBA8bX6enpat68uby9veXk5KSuXbvq9OnTxop4AwYM0Pjx4xUREaHRo0cbE7XKUlIB8165cb9KjpK+3X6FhYWZJNdFRESoqKjIWDnzdoKCgpSdna2dO3dq6NChioqKUnx8fKl+b775prKzs02u8PDwcsft2bOnsrOzNWvWLF28eFHFxcXGtpIkQQcHBwUFBalKlSrG5L8S06ZNU3Z2ttatW6fatWtrzpw5qly5skmfG8e8lZYtW6patWpKS0uTJG3atEn5+fnq0aOHWc/HxcXJ3d1dkydPNqu/pfGZM8btqoiWcHJyUnZ2tnbt2qWUlBQ9/vjjmjBhQql+r7zySqn3s0OHDsb2m+eLiopSdna21qxZo4sXLxq/j+au8ZdfftHKlSvVpUsX470uXbqUeQx5SfKtk5OTVqxYoblz55p8N27lxn42NjZyd3dXaGio8V6VKlUk/d/vUE5OjjIyMkx+D0uSXkt+Ew8dOqTY2Fj5+/vL2dlZvr6+kq4na5c39+1+74YPH65z584ZrxMnTpi1PgAAAAAAAAAAgBvZ3r4LAAAAgHvlwoULkqQ1a9bI29vbpM3Ozs6YcFShQgXj/ZJErJuP2zXHvRrnXjl27JjatWunvn37asKECapcubK2bdumuLg4/f7773JwcNBrr72mqKgorVmzRhs3blRycrJSUlLKTEq8VfXPO3HjfknX9+yP3q+KFSsqICBAkjRp0iS1bdtWY8aM0bhx40z6eXh4GPvdrGbNmtq2bZuuXr1qXIOrq6tcXV31ww8/lOrv5OSkb775RtbW1qpatWqZ++jp6amAgAAFBAQoLS1Nzz77rPbv32+snBoYGGiSWHujkvuBgYGSrh/l3b17dy1YsEBJSUlKS0tTs2bN5O/vb84WydbWVhMmTDBWZDVXyfzfffddqcRgc5Wsxc/Pz6z+1tbWxvcpODhYhw8fVt++ffXxxx+b9HNxcbnl+3nu3Dn99NNPxiqYBoNBAQEBJlVOpetr/O67724bV0m11oYNGxrvFRcXq6ioSAcPHjTulXQ9+bZFixZycXHRI488Yta6S5T1HbrV79CFCxfUvn37MpNrS5Io27dvrxo1amj27Nny8vJSUVGR6tSpU+pYdEt+7+zs7GRnZ2fR2gAAAAAAAAAAAG5GBUwAAADgPqpdu7bs7OyUn59vTG4rucw9ArdixYpmV6O0VHBwsDIzM03uZWZmKjAwUDY2NmaNsX379lKvS46k3r17t4qKipSSkqJGjRopMDBQ//nPf0qN4ePjoz59+mjlypVKTEzU7Nmzy5yrbt262rRpk1lx/RGCg4OVk5OjixcvGu9lZmbK2tra7GOhbzZixAhNnTq1zH0pT2xsrC5cuKAZM2aY1b8kSdDf39+sJNYGDRroiSeeMKnk+NJLLyk9PV05OTkmfYuKijRt2jTVrl1bYWFhxvs9evTQiRMntHLlSn3++eeKi4szc3XXRUdHKyQkRGPGjDH7mVatWsnDw0NTpkwps/2XX3655fNFRUV677335Ofnp3r16lkSrtGwYcP06aef6ptvvjH7mU6dOqlChQpmVfx8+eWXdfDgQa1atapUW3FxsfHY9rlz5yoxMdGk4mZOTo6eeuopzZs3z+S5kuRbS5Mv78Tjjz+uffv2ydfXt9RvoqOjo06fPq28vDyNGDFCzZs3V3BwsM6ePfuHxwUAAAAAAAAAAGAOEjABAACA+8jJyUmDBw/WoEGDtGDBAh0+fFjffPON3n//fS1YsMCsMXx9fXX06FFlZ2fr1KlTunLlyj2LLzExUZs2bdK4ceN08OBBLViwQNOnT9fgwYPNHiMzM1NTpkzRwYMH9cEHH2j58uUaOHCgJCkgIEBXr17V+++/ryNHjujjjz/WzJkzTZ5PSEjQhg0bdPToUX3zzTfKyMgwJnDebPjw4dq5c6f69eunvXv36rvvvtOHH36oU6dO3fkmWOCVV15RpUqV1K1bN3377bfKyMhQfHy8unbtajxq2VKNGzdW3bp1NXHiRJP7v/76q3766SeT6/z588ZnEhMTlZiYqL///e/atm2bjh8/ru3bt2vu3LmysrKStfXd/edfQkKCZs2apR9//FGSNGjQIDVo0EDt27fX8uXLlZ+fr507d+rFF1/UgQMHjPOW8PPzU2RkpHr37i07Ozu98MILFscwadIkzZs3zyTh9VYcHR01Z84crVmzRh06dFB6erqOHTumXbt2aciQIerTp49J/9OnT+unn37SkSNH9OWXX6pFixbasWOH5s6da3YC8s18fHz0/PPPa9SoUSb3L126VOr9LEksrF69ulJSUvSPf/xD3bp1U0ZGho4dO6ZvvvlG7733niQZ4+ncubNiYmIUGxuriRMnateuXTp+/LhWr16tFi1aKCMjQ9nZ2frmm2/02muvqU6dOiZXbGysFixYoMLCwjta393q37+/zpw5o9jYWO3cuVOHDx/Whg0b1KNHD127dk1ubm5yd3fXRx99pO+//16bN2/W3//+9wcSKwAAAAAAAAAAwM1IwAQAAADus3HjxmnkyJFKTk5WcHCwWrdurTVr1ph9xPGLL76o1q1bq1mzZnrkkUe0ZMmSexbb448/rmXLlmnp0qWqU6eORo0apbFjx6p79+5mj5GYmKhdu3apXr16Gj9+vFJTUxUVFSVJCgsLU2pqqiZPnqw6depo0aJFSk5ONnn+2rVr6t+/v3FvAgMDy63sGBgYqI0bNyonJ0cNGjRQ48aNtWrVqlLHNP9RHBwctGHDBp05c0b169dXp06d1Lx5c02fPv2uxh00aJDmzJmjEydOGO+NGjVKVatWNbmGDBlibJ86daoWL16sPXv2qF27dqpZs6aio6NVVFSkrKwsOTs731VMrVu3lp+fn7EKZqVKlbR582a9+uqreuuttxQQEKDWrVvLxsZG27dvV6NGjUqNERcXp7Nnz+rll19WpUqVLI4hMjJSkZGRFiULduzYUf/6179UoUIFvfzyy6pVq5ZiY2N17tw5jR8/3qRvixYtVLVqVYWGhmrYsGEKDg7W3r171axZM4tjvdGgQYO0Zs0a7dixw3hv9uzZpd7P2NhYY3t8fLw2btyo//73v+rUqZNq1qypZ599VkePHtX69esVGhoq6fpR24sXL1Zqaqq++OILPfPMM6pbt66SkpLUsWNHRUVFae7cuapdu7Zq1apVKrbnn39eJ0+e1Nq1a+9qjXfKy8tLmZmZunbtmlq1aqXQ0FAlJCTI1dVV1tbWsra21tKlS7V7927VqVNHgwYN0jvvvPNAYgUAAAAAAAAAALiZVXFxcfGDDgIAAAAAAOBBOX/+vFxcXBQWP1M2dvYPOhwAAIA/hd3vvPqgQwAAAAAA4I6U/L3BuXPnblvkhAqYAAAAAAAAAAAAAAAAAAAAFiIBEwAAAIBZtm7dKoPBUO71MMnPz79lrPn5+fcljlvFsHXr1vsSw5/ZokWLyt3fkJCQez5fSEhIufMtWrTons/3MHlYvlMAAAAAAAAAAAAPE9sHHQAAAACA/w3h4eHKzs5+0GGYxcvL65axenl53Zc4bhWDt7f3fYnhz6xDhw5q2LBhmW0VKlS45/OtXbtWV69eLbOtSpUq93y+h8nD8p0CAAAAAAAAAAB4mJCACQAAAMAs9vb2CggIeNBhmMXW1vahiPVhiOHPzMnJSU5OTvdtvho1aty3uR42D8t3CgAAAAAAAAAA4GHCEeQAAAAAAAAAAAAAAAAAAAAWogImAAAAAACApK/Hx8rZ2flBhwEAAAAAAAAAAP5HUAETAAAAAAAAAAAAAAAAAADAQiRgAgAAAAAAAAAAAAAAAAAAWIgETAAAAAAAAAAAAAAAAAAAAAuRgAkAAAAAAAAAAAAAAAAAAGAhEjABAAAAAAAAAAAAAAAAAAAsZPugAwAAAAAAAHgYPD1iiWzs7B90GACA/8/encfVmP7/A3+dSps2hTYpbUqbZCtbCImGLKmRSHbZ97En+84YS1qMicjOGCSyZovIll2YMINKEW2/P/zO/e12WsmYz+fzej4e9+Mx7vu6r/t9Xeec+5zmvM/7IqJ/ROJi/+8dAhEREREREdF/PFbAJCIiIiIiIiIiIiIiIiIiIiIiIiKqICZgEhERERERERERERERERERERERERFVEBMwiYiIiIiIiIiIiIiIiIiIiIiIiIgqiAmYREREREREREREREREREREREREREQVxARMIiIiIiIiIiIiIiIiIiIiIiIiIqIKYgImEREREREREREREREREREREREREVEFMQGTiIiIiIiIiIiIiIiIiIiIiIiIiKiCmID5X8bExAQrVqz43mH8I/5NY3306BEkEgmSkpJKbefq6orRo0f/IzEREdGXKywsxKBBg6CtrV2u+zv9+0gkEuzZswdA+d+n/wlnzpyBnZ0dqlSpgq5du37XWIrO0ZeKjIyElpZWqW1mzZqF+vXrf9V1iirP56l/0+dEotKU9Tr8kvtXZb/miIiIiIiIiIiIiIiIqGTfPQHz+fPnGDFiBExNTaGkpAQjIyN4enoiLi4OQMlfSPXr10/0pfXDhw/x448/wsDAAMrKyqhVqxa6dOmC27dvIzIyEhKJpNTt0aNHpcY5a9YsSCQSDBkyRLQ/KSmp2PM3bdqERo0aQVVVFerq6mjVqhUOHDjwJVNEJbh48SIGDRr0vcMoVnx8PCQSCdLT07+4D1dXV+H5qaysDEtLS8yfPx+FhYVCG+kXssVt586dA4ASn/8bN24s9biysrJwnX79+gn7q1Spgjp16mDixInIyckRxVz0fA0NDTRq1Ah79+4VtanM65Xm83mQ+vDhA3R0dCCRSBAfHy86duDAAbRq1Qrq6upQVVVFo0aNEBkZKWrz+Zyrq6vDxsYGw4cPx927d79orF+agGNiYlLsGEePHg1XV1eZ9k+fPoWioiJsbW2L7a+ic1bScy86OrrM2MuTsPMlvlW/31pl3DP+7d6+fYvRo0fD2NgYKioqcHFxwcWLF0VtXrx4gX79+sHAwACqqqpwd3eXeV2VJSUlBa1bt4auri6UlZVhamqKadOmITc3V2iTm5uL4OBgmJmZQVlZGQ4ODjh06JCon0OHDiEyMhIHDhxAWloabG1tsXbtWtjb20NDQwMaGhpwdnbGH3/8UaH4CgsLsWTJElhaWkJJSQmGhoaYO3eucHzXrl1o164datSoIVzj8OHDFbpGecXExMDKygrKysqws7PDwYMHhWO5ubmYNGkS7OzsULVqVRgYGMDf3x9//vmnqI+5c+fCxcUFqqqqxb72rl69Cl9fXxgZGUFFRQXW1tZYuXKlTLuoqCg4ODhAVVUV+vr66N+/P169elXpYy5LamoqOnXqBFVVVdSsWRMTJkxAXl5epV5j7NixqF+/Ph4+fCi8x3zpvVRq165daN++vXCv/pJE00ePHiEwMBB16tSBiooKzMzMMHPmTHz8+LHCfX2t9PR0DB8+HPr6+lBSUoKlpaXo+VnZCgsL0bFjx2L/7hg5ciScnJygpKRUYkLbtWvX0KJFCygrK8PIyAiLFi2SaVPWmKTv6Z9vw4cPF9o8f/4cffr0gZ6eHqpWrYoGDRpg586dousU18+CBQuE4zk5OejXrx/s7OygoKBQ4meQ8rwmyxrTyZMn4enpCQMDg1L/pvs8Xnd3d1Gb169fo3fv3tDQ0ICWlhYCAwORlZUlHI+Pj0eXLl2gr6+PqlWron79+oiKiip2XMUp7fN0TEyMTPtXr16hVq1a3+19+9WrV3B3d4eBgYHw93NQUBAyMzMr1M+uXbvQsGFDaGlpCfO2efNmmTZl3VtycnIwfPhw6OjoQE1NDd27d8eLFy9Ebcq6t0o/B32+PX/+vEJjIiIiIiIiIiIiIiIi+h6+awLmo0eP4OTkhGPHjmHx4sVITk7GoUOH0Lp1a9GXjWXJzc1Fu3btkJGRgV27diElJQXbtm2DnZ0d0tPT0atXL6SlpQmbs7MzBg4cKNpnZGRU5nWUlZURFhZWZjLI+PHjMXjwYPTq1QvXrl3DhQsX0Lx5c3Tp0gU///xzucdFpatRowZUVVW/dxjflPR5mpKSgilTpmDGjBlYt26dTLujR4+Kns9paWlwcnISjmtoaMgc7927d6nHHz9+LLqGu7s70tLS8ODBAyxfvhzr16/HzJkzZWKJiIhAWloaLl26hGbNmqFHjx5ITk4WtanM65XGyMgIERERon27d++GmpqaTNvVq1ejS5cuaNasGc6fP49r167Bx8cHQ4YMwfjx42XaS+f86tWrmDdvHm7dugUHBwchebwiY/0aysrKmDRpUrnaRkZGwtvbG5mZmTh//nyxbSoyZ8D/Pd5Ft+9d0Y3+nQYMGIDY2Fhs3rwZycnJaN++Pdzc3PDs2TMAnxKgunbtigcPHmDv3r24cuUKjI2N4ebmhuzs7HJfp0qVKvD398eRI0eQkpKCFStWIDQ0VHT/mDZtGtavX4/Vq1fj5s2bGDJkCLy8vHDlyhWhzf3796Gvrw8XFxfo6elBQUEBtWrVwoIFC5CYmIhLly6hTZs26NKlC27cuFHu+EaNGoWNGzdiyZIluH37Nvbt24fGjRsLx0+ePIl27drh4MGDSExMROvWreHp6SmKrTKcPXsWvr6+CAwMxJUrV9C1a1d07doV169fBwC8e/cOly9fxvTp03H58mXh89UPP/wg6ufjx4/o2bMnhg4dWux1EhMTUbNmTfz222+4ceMGpk6diilTpog+D505cwb+/v4IDAzEjRs3EBMTgwsXLmDgwIGVOuay5Ofno1OnTvj48SPOnj2LTZs2ITIyEjNmzKjU69y/fx9t2rRBrVq1REmrn99PK3Ivzc7ORvPmzbFw4cIvjuv27dsoKCjA+vXrcePGDSxfvhzr1q3DTz/99MV9fomPHz+iXbt2ePToEXbs2IGUlBSEhobC0NDwm11zxYoVkEgkJR7v378/evXqVeyxzMxMtG/fHsbGxkhMTMTixYsxa9YsbNiwQWhTnjFdvHhR9PjHxsYCAHr27Cm08ff3R0pKCvbt24fk5GR069YN3t7eMveH4OBgUV8jRowQjuXn50NFRQUjR46Em5tbsWMqz2uyPGPKzs6Gg4MD1qxZU+LcAv/3mU+6bd26VXS8d+/euHHjBmJjY3HgwAGcPHlS9COss2fPwt7eHjt37sS1a9cQEBAAf3//cv/4zcjISOazzOzZs6GmpoaOHTvKtA8MDIS9vX25+v4W5OTk0KVLF+zbtw937txBZGQkjh49KvNDwbJoa2tj6tSpSEhIEOYtICBAlPRfnnvLmDFjsH//fsTExODEiRP4888/0a1bN+F4Re6tKSkposehZs2aFRoTERERERERERERERHR9/BdEzCHDRsGiUSCCxcuoHv37rC0tISNjQ3Gjh0rU4GtNDdu3MD9+/fxyy+/oGnTpjA2NkazZs0QEhKCpk2bQkVFBXp6esKmqKgIVVVV0T55efkyr1O3bl20bt0aU6dOLbHNuXPnsHTpUixevBjjx4+Hubk5rK2tMXfuXIwePRpjx47FkydPyryWtIrbgQMHULduXaiqqqJHjx549+4dNm3aBBMTE1SrVg0jR45Efn6+6Ny3b9/C19cXVatWhaGhYZlfehYlkUiwdu1adOzYESoqKjA1NcWOHTtEbSZNmgRLS0uoqqrC1NQU06dPF1UWA4CQkBDUrFkT6urqGDBgACZPnixTNWjjxo2wtraGsrIyrKys8MsvvwjHXFxcZJLK/vrrL1SpUgUnT54EILu0ZHp6OgYMGCBUDWvTpg2uXr0KAMjIyIC8vDwuXboEACgoKIC2tjaaNm0qnP/bb7+VKxEXAC5cuABHR0coKyujYcOGoi++Hz16hNatWwMAqlWrBolEgn79+pWr389Jn6fGxsYICAiAvb298IV8UTo6OqLns56eHqpUqSIcl0gkMsdVVFRKPa6rqyu6hpKSEvT09GBkZISuXbvCzc2t2Fi0tLSgp6cHS0tLzJkzB3l5eTh+/LioTWVerzR9+/ZFdHQ03r9/L+wLDw9H3759Re2ePHmCcePGYfTo0Zg3bx7q1asHc3NzjBs3DosXL8bSpUtlEhalc25qaoouXbrg6NGjaNKkCQIDA0WvyfKM9WsMGjQI586dK7MyWGFhISIiItCnTx/8+OOPCAsLK7ZdeedMSvp4F92KVvgsTnx8PAICApCRkSFUOJo1axaAT9U2x48fD0NDQ1StWhVNmjQRqm7m5OTAxsZGlHRx//59qKurIzw8vNR+S/PhwwdMmjQJRkZGUFJSgrm5uWh+Tpw4gcaNG0NJSQn6+vqYPHmyqGpTccvc1q9fX3RtadVZLy8vqKqqwsLCAvv27QPw5feMHTt2wM7ODioqKtDR0RElKha3PG/Xrl1F/ZqYmCAkJAT+/v5QU1ODsbEx9u3bh7/++gtdunSBmpoa7O3thftmeZw5cwaurq5QVVVFtWrV0KFDB7x58wbv37/Hzp07sWjRIrRs2RLm5uaYNWsWzM3NsXbtWgDA3bt3ce7cOaxduxaNGjVC3bp1sXbtWrx//16UjLNs2TKhKqORkRGGDRsmqoRmamqKgIAAODg4wNjYGD/88AN69+6NU6dOCW02b96Mn376CR4eHjA1NcXQoUPh4eGBpUuXAvhUkW3EiBFITU2FRCKBiYkJAMDT0xMeHh6wsLCApaUl5s6dCzU1NdFnlvT0dAwePFiowGlrayskAd26dQtr167F3r178cMPP6BOnTpwcnJCu3bthPNXrFiBiRMnolGjRrCwsMC8efNgYWGB/fv3C20OHTqE5s2bQ0tLCzo6OujcuTPu378veiyePHkCb29vaGlpQVtbG126dBFV6165ciXc3d0xYcIEWFtbY86cOWjQoIGQGKmpqYnY2Fh4e3ujbt26aNq0KX7++WckJiYiNTVV6Gf27NkYM2YM7Ozsin1O9O/fHytXrkSrVq1gamoKPz8/BAQEYNeuXUKbhIQEmJiYYOTIkahTpw6aN2+OwYMH48KFC6K+wsPDYWNjI7wWg4KChGN3795Fy5YtoaysjHr16pX4fnH79m24uLgIj82JEyeEY0eOHMHNmzfx22+/oX79+ujYsSPmzJmDNWvWCFUg79+/jy5dukBXVxdqampo1KgRjh49KrpGSfcUaZW9V69eoX///pBIJKIqy5/fTz+/l+7fvx+NGjWCsrIyqlevDi8vL+FYnz59MGPGjBIT6sozR+7u7oiIiED79u1hamqKH374AePHjxc9VsCnz6i1a9eGqqoqvLy8iq1UumDBAujq6kJdXR2BgYEVqmAdHh6O169fY8+ePWjWrBlMTEzQqlUrODg4iNrl5eUhKCgImpqaqF69OqZPny6qEg6U7zNxUlISli5divDw8GLjWbVqFYYPHw5TU9Nij0dFReHjx4/C89PHxwcjR47EsmXLKjSmGjVqiB7/AwcOwMzMDK1atRLanD17FiNGjEDjxo2F6r5aWlpITEwUxaSuri7qq2rVqsKxqlWrYu3atRg4cCD09PSKHVN5XpPlGVPHjh0REhIieq4WR/qZT7pVq1ZNOHbr1i0cOnQIGzduRJMmTdC8eXOsXr0a0dHRQkXen376CXPmzIGLiwvMzMwwatQouLu7yzx3S7qHyMvLy3yW2b17N7y9vWV+gLJ27Vqkp6cX++McANi7dy8aNGggVGCePXu26DNDee5Vpf2dAXz6rDB06FA0bNgQxsbGaNu2LYYNGyZ6n5Nav349jIyMoKqqCm9vb2RkZAjHXF1d4eXlBWtra2He7O3tcfr0aaFNWfeWjIwMhIWFYdmyZWjTpg2cnJwQERGBs2fPCu+N5bm3StWsWVP0OMjJ/d//rqiM9z4iIiIiIiIiIiIiIqJv4bslYL5+/RqHDh3C8OHDRV8KSlVkCdkaNWpATk4OO3bskElGrGwLFizAzp07S0xI2bp1K9TU1DB48GCZY+PGjUNubq7MUoEleffuHVatWoXo6GgcOnQI8fHx8PLywsGDB3Hw4EFs3rwZ69evl0mQXLx4MRwcHHDlyhVMnjwZo0aNqlDi2vTp09G9e3dcvXoVvXv3ho+PD27duiUcV1dXR2RkJG7evImVK1ciNDQUWqenHwABAABJREFUy5cvF45HRUVh7ty5WLhwIRITE1G7dm0hwaZomxkzZmDu3Lm4desW5s2bh+nTp2PTpk0APlW6iY6OFn2Rvm3bNhgYGKBFixbFxt2zZ0+8fPkSf/zxBxITE9GgQQO0bdsWr1+/hqamJurXry8kciUnJ0MikeDKlStC4s6JEydEX3KXJCsrC507d0a9evWQmJiIWbNmib6ENTIyEh5jaRWX4pZbrYjCwkKcOnUKt2/fhqKi4lf1VRmuX7+Os2fPlhpLXl6ekMT2tTGX53rFcXJygomJifB4pKam4uTJk+jTp4+o3Y4dO5Cbm1vsl+mDBw+GmpqaTDWmz8nJyWHUqFF4/PixTCLEt1SnTh0MGTIEU6ZMQUFBQYntjh8/jnfv3sHNzQ1+fn6Ijo4utqpgeefsa7i4uGDFihWi6qDSuQ8KCkJCQgKio6Nx7do19OzZU1iGWllZGVFRUdi0aRP27t2L/Px8+Pn5oV27dujfv3+p/ZbG398fW7duxapVq3Dr1i2sX79eSLh49uwZPDw80KhRI1y9ehVr165FWFgYQkJCKjzu2bNnw9vbG9euXYOHhwd69+6N169ff9E9Iy0tDb6+vujfvz9u3bqF+Ph4dOvWTSb5qCzLly9Hs2bNcOXKFXTq1Al9+vSBv78//Pz8cPnyZZiZmcHf379c/SYlJaFt27aoV68eEhIScPr0aXh6eiI/Px95eXnIz8+XSShTUVEREj0+fPgAAKI2cnJyUFJSEiWDyMnJYdWqVbhx4wY2bdqEY8eOYeLEiSXGde/ePRw6dEh0f//w4UOpsaxcuRLBwcGoVasW0tLSZJZKBz5V9JK+jpydnQF8Su7v2LEjzpw5g99++w03b97EggULhB957N+/H6ampjhw4ADq1KkDExMTDBgwAK9fvy4x/oKCArx9+xba2trCvuzsbIwdOxaXLl1CXFwc5OTk4OXlJdwDcnNz0aFDB6irq+PUqVM4c+YM1NTU4O7uLiS7JCQkyCTUdOjQAQkJCSXGIk1urshntJL6KToeZ2dnPHnyBAcPHkRhYSFevHiBHTt2wMPDQ2izdu1aDB8+HIMGDUJycjL27dsHc3NzYY66desGRUVFnD9/HuvWrSuxMvCECRMwbtw4XLlyBc7OzvD09BQSCBMSEmBnZydKku/QoQMyMzOFKqdZWVnw8PBAXFwcrly5And3d3h6eoqSUku6p0ir7GloaGDFihVIS0sTVVUcPnw4qlevjsaNGyM8PFz0uvv999/h5eUFDw8PXLlyBXFxcaLKqWWpyBwV9fljdf78eQQGBiIoKAhJSUlo3bq1zP1w+/btmDVrFubNm4dLly5BX19f9CObsuzbtw/Ozs4YPnw4dHV1YWtri3nz5sl8xt+0aRMUFBRw4cIFrFy5EsuWLcPGjRtFbcr6TPzu3Tv8+OOPWLNmTYnJiGVJSEhAy5YtRZ9ROnTogJSUFLx586ZCY5L6+PEjfvvtNyFRV8rFxQXbtm3D69evUVBQgOjoaOTk5MDV1VV0/oIFC6CjowNHR0csXrxYlABYHuV5TVZ0TKWJj49HzZo1UbduXQwdOlSU1JuQkAAtLS00bNhQ2Ofm5gY5ObkSq3kDss/d0u4hn0tMTERSUhICAwNF+2/evIng4GD8+uuvosRAqVOnTsHf3x+jRo3CzZs3sX79ekRGRmLu3LkAyvc6LOvvjOL8+eef2LVrl8zfMffu3cP27duxf/9+HDp0CFeuXMGwYcOK7aOwsBBxcXFISUlBy5YtS71eUYmJicjNzRW9n1hZWaF27drC+0l57q1S9evXh76+Ptq1a4czZ86IjlXGe9/nPnz4gMzMTNFGRERERERERERERERUUQrf68L37t1DYWEhrKysvrovQ0NDrFq1ChMnTsTs2bPRsGFDtG7dGr179y6xWs2XatCgAby9vTFp0iSZpYYB4M6dOzAzMys2UczAwAAaGhq4c+dOua6Vm5uLtWvXwszMDADQo0cPbN68GS9evICamhrq1auH1q1b4/jx46Iv8Js1a4bJkycDACwtLXHmzBksX75cVGGrND179sSAAQMAAHPmzEFsbCxWr14tfHk+bdo0oa2JiQnGjx+P6OhoIQFm9erVCAwMREBAAABgxowZOHLkiKhC2cyZM7F06VJhebo6deoIX1T27dsX3t7eGD16NE6fPi0kXG7ZsgW+vr7FLhF5+vRpXLhwAS9fvoSSkhIAYMmSJdizZw927NiBQYMGwdXVFfHx8Rg/fjzi4+PRrl073L59G6dPn4a7uzvi4+NLTeKR2rJlCwoKChAWFgZlZWXY2Njg6dOnwvKr8vLywhe+NWvW/KpElV9++QUbN27Ex48fkZubC2VlZYwcOVKmnYuLi8wXwUXnOyMjQ1TBR01NDc+fPy/xOAC0aNECf/zxh/DvAwcOQE1NDXl5efjw4QPk5ORES8hK+fr6Ql5eHu/fv0dBQQFMTEzg7e0talOZ1ytL//79ER4eDj8/P0RGRsLDwwM1atQQtblz5w40NTWhr68vc76ioiJMTU3L9bqV3s8ePXokJMaUZ6xfa9q0aYiIiEBUVFSJiZJhYWHw8fGBvLw8bG1tYWpqipiYmGIrLZZnzqSkj3dRN2/eRO3atUuMV1FREZqamkJ1UKnU1FREREQgNTUVBgYGAIDx48fj0KFDiIiIwLx581C/fn2EhIRgwIAB8PHxwePHj4XqgiX1W5o7d+5g+/btiI2NFZIHir5v/PLLLzAyMsLPP/8MiUQCKysr/Pnnn5g0aRJmzJhRbAJGSfr16wdfX18AwLx587Bq1SpcuHAB7u7uFb5npKWlIS8vD926dYOxsTEAlFiBsDQeHh7CDwZmzJghVJ+ULnk7adIkODs748WLF2XO6aJFi9CwYUNRopWNjY3w387OzpgzZw6sra2hq6uLrVu3IiEhQUiAkSZsTJkyBevXr0fVqlWxfPlyPH36FGlpaUI/RSt7Sqt4DhkyRCbBy8XFBZcvX8aHDx8waNAgBAcHC8c6dOiAZcuWoWXLljAzM0NcXBx27dolJA5pampCXV1dqIpWVHJyMpydnZGTkwM1NTXs3r0b9erVAwAcPXoUFy5cwK1bt2BpaQlA/Hx68OABHj9+jJiYGPz666/Iz8/HmDFj0KNHDxw7dqzYeV2yZAmysrJE99Hu3buL2oSHh6NGjRq4efMmbG1tsW3bNhQUFGDjxo3Ce2ZERAS0tLQQHx+P9u3b4/nz5zLVeHV1dUXvDUXl5ORg0qRJ8PX1hYaGRrFtyuPs2bPYtm0bfv/9d2Ffs2bNEBUVhV69eiEnJwd5eXnw9PQUVSsMCQnBuHHjMGrUKGFfo0aNAHya99u3b+Pw4cPCvWPevHnFLh0cFBQkzN/atWtx6NAhhIWFYeLEiSXOCQBhXhwcHEQV/ubMmYPdu3dj3759CAoKKvOeoqenB4lEAk1NTdFzKzg4GG3atIGqqiqOHDkiVHaVvufPnTsXPj4+mD17tnDO5xUhS1OROZK6d+8eVq9ejSVLlgj7pJVTpZ+XLC0tcfbsWRw6dEhos2LFCgQGBgrJayEhITh69Gi5q2A+ePAAx44dQ+/evXHw4EHcu3cPw4YNQ25uLmbOnCm0MzIywvLlyyGRSFC3bl0kJydj+fLlomWyy/pMPGbMGLi4uKBLly7liq04z58/R506dUT7ij5vqlWrVu4xSe3Zswfp6eky79Hbt29Hr169oKOjAwUFBaiqqmL37t2iRMKRI0eiQYMG0NbWxtmzZzFlyhSkpaWJKnKWpTyvyYqOqSTu7u7o1q0b6tSpg/v37+Onn35Cx44dkZCQAHl5eTx//lxmGWoFBQVoa2uXeL/avn07Ll68iPXr1wv7SruHfC4sLAzW1tZwcXER9n348AG+vr5YvHgxateujQcPHsicN3v2bEyePFmoGm5qaoo5c+Zg4sSJmDlzZrleh2X9nVGUr68v9u7di/fv38PT01MmATknJwe//vqrsCz86tWr0alTJyxdulS4/2RkZMDQ0BAfPnyAvLw8fvnll3L/zQh8eo4rKirKfHYp+n5Snnurvr4+1q1bh4YNG+LDhw/YuHEjXF1dcf78eTRo0ABA5bz3fW7+/Pmi+yoREREREREREREREdGX+G4JmBWt0lWW4cOHw9/fH/Hx8Th37hxiYmIwb9487Nu3r0JfIpVHSEgIrK2tceTIEZkvBIHKG5uqqqqQfAl8+qLKxMRElMylq6uLly9fis6TVuIq+u/Pl8ctTXHnJyUlCf/etm0bVq1ahfv37yMrKwt5eXmiZIyUlBSZ6iqNGzcWkkuys7Nx//59BAYGir4kz8vLg6amJoBPVU3bt2+PqKgotGjRAg8fPkRCQoLoi9Sirl69iqysLOjo6Ij2v3//XliarlWrVggLC0N+fj5OnDiB9u3bQ09PD/Hx8bC3t8e9e/dkKggV59atW7C3txdVT/t8zipL7969MXXqVLx58wYzZ86Ei4uL6MtgqW3btsHa2rrEftTV1XH58mXh358njX1+HIBoiXIAaN26NdauXYvs7GwsX74cCgoKMl+EAp8q6rm5ueHBgwcYM2YMVq1aJapAVNnXK4ufnx8mT56MBw8eIDIyEqtWrapwH+Ulfe0XTRIuz1i/Vo0aNTB+/HjMmDFDlIwtlZ6ejl27domqCPr5+SEsLKzYBMyKzJn08S5KmlRQUcnJycjPzxcS16Q+fPggem2PGzcOe/bswc8//4w//vhD5nVfEUlJSZCXly+x+u2tW7fg7OwsekybNWuGrKwsPH36tNRE08/Z29sL/121alVoaGjI3L/Ly8HBAW3btoWdnR06dOiA9u3bo0ePHqJlWysakzQZomgip3Tfy5cvy0zATEpKEhI3i7N582b0798fhoaGkJeXR4MGDeDr6ytUjK1SpQp27dqFwMBAaGtrQ15eHm5ubujYsaPoffXo0aOYP38+bt++jczMTOTl5SEnJwfv3r2Dqqqq0G7btm14+/Ytrl69igkTJmDJkiVC0tjKlSsxcOBAWFlZQSKRwMzMDAEBASUuQVxU3bp1kZSUhIyMDOzYsQN9+/bFiRMnUK9ePSQlJaFWrVoyz2GpgoICfPjwAb/++qvQJiwsDE5OTkhJSUHdunVF7bds2YLZs2dj7969os8bd+/exYwZM3D+/Hn8/fffQvWv1NRU2Nra4urVq7h37x7U1dVF/eXk5Mgs11oeubm58Pb2RmFhoUxF64q4fv06unTpgpkzZ4oSYW7evIlRo0ZhxowZ6NChA9LS0jBhwgQMGTIEYWFhePnyJf7880+0bdu22H5v3boFIyMj0b2npPflovsVFBTQsGFDUZXvsmRlZWHWrFn4/fffhUTo9+/fCxUwy7qnlGT69OnCfzs6OiI7OxuLFy8WEjCTkpJEn5kqqiJzBHyq/uvu7o6ePXuKrnvr1i2Z5aSdnZ1FCZi3bt3CkCFDZNocP368XLEWFBSgZs2a2LBhA+Tl5eHk5IRnz55h8eLFosS+pk2biu7Nzs7OWLp0KfLz84UfBpT2mXjfvn04duyYzPLO30J5xyQVFhaGjh07yryfTp8+Henp6Th69CiqV6+OPXv2wNvbG6dOnRLu3WPHjhXa29vbQ1FREYMHD8b8+fOFHymVpazX5JeMqSQ+Pj7Cf9vZ2cHe3h5mZmaIj48v8TVfmuPHjyMgIAChoaHCjwDKuocU9f79e2zZskX0mgSAKVOmwNraGn5+fiWee/XqVZw5c0aoeAl8qpYsfY8qz+uwIn9nLF++HDNnzsSdO3cwZcoUjB07VvRjhNq1awvJl9J+CgoKkJKSIrynq6urIykpCVlZWYiLi8PYsWNhamparr+JKlPdunVF74EuLi64f/8+li9fjs2bNwP4Nu990nmTyszMhJGRUWUPj4iIiIiIiIiIiIiI/st9twRMCwsLSCQS3L59u9R26urqyMjIkNmfnp4uJOsVbevp6QlPT0+EhISgQ4cOCAkJqfQETDMzMwwcOBCTJ08WvoSUsrS0xOnTp/Hx40eZKph//vknMjMzS0zM+FyVKlVE/5ZIJMXuK23Z4cqWkJCA3r17Y/bs2ejQoQM0NTURHR2NpUuXlrsPaWXG0NBQNGnSRHSsaCW93r17Y+TIkVi9ejW2bNkCOzu7Eiu8ZWVlQV9fX1hivChpRZaWLVvi7du3uHz5Mk6ePIl58+ZBT08PCxYsgIODAwwMDGBhYVHucfwTNDU1hapG27dvh7m5OZo2bSqT8GZkZFTiMorAp4TLrzkOfEoYk7YJDw+Hg4MDwsLCZJZn1NPTg7m5OczNzREREQEPDw/cvHlTlDxUmdcri46ODjp37ozAwEDk5OSgY8eOePv2raiNpaUlMjIy8Oeff8okO3z8+BH3799H69aty7yWNImnaCWs8oy1Mki/dC9umdctW7YgJydH9HorLCxEQUEB7ty5I3NPKs+cSUkf78qQlZUFeXl5JCYmylTVLJp4/vLlS9y5cwfy8vK4e/cu3N3dv/ialZEMKycnJ5N4n5ubK9OuMu/f8vLyiI2NxdmzZ3HkyBGsXr0aU6dOxfnz51GnTp0vikmayFTcvvLEWdZcmpmZ4cSJE8jOzkZmZib09fXRq1cvUXVAJycnIbnx48ePqFGjBpo0aSIsPfvo0SN07twZQ4cOxdy5c6GtrY3Tp08jMDAQHz9+FCVgShMo6tWrh/z8fAwaNAjjxo2DvLw8atSogT179iAnJwevXr2CgYEBJk+eXK6q2YqKisJz3snJCRcvXsTKlSuxfv36MudAX18fCgoKotecNHk+NTVVlHwSHR2NAQMGICYmRuae7+npCWNjY4SGhsLAwAAFBQWwtbUVlljNysqCk5MToqKiZGKQVrPV09PDixcvRMeKq3QqTb58/Pgxjh079sXVL2/evIm2bdti0KBBokrawKcKZM2aNcOECRMAfEoaq1q1Klq0aIGQkBCZKsLfip6eHi5cuCDaJ50j6byMHz8esbGxWLJkCczNzaGiooIePXoIc19ZCfZNmjTBnDlz8OHDBygpKVV64n5p/vzzT7Ru3RouLi7YsGHDP3ZdKX19fVSpUkX0PmBtbY3nz58X+/n6Sx07dgz379+XqdzXvXt3tGjRotjPlMUp6bUkPQZUbEyPHz/G0aNHsWvXLlGf9+/fx88//4zr168LiYUODg44deoU1qxZg3Xr1hUbX5MmTZCXl4dHjx7JJHmXpKzXpL6+/jd7nExNTVG9enXcu3cPbdu2hZ6ensyPFfLy8vD69WuZ+9WJEyfg6emJ5cuXw9/fX9hfkdfPjh078O7dO9H5wKfnS3JyMnbs2AHg/350U716dUydOhWzZ89GVlYWZs+eLVT4L6poQmVl0dPTg56eHqysrKCtrY0WLVpg+vTpxVZ0L0nRz6n169fHrVu3MH/+/HInYOrp6eHjx49IT08XvZaKvp+U595anMaNG4t+PFQZ732fU1JSKndiMhERERERERERERERUUnKv3ZqJdPW1kaHDh2wZs0aZGdnyxxPT08H8KkahrQ6llR+fj6uXr1aaiKjdKnY4vquDDNmzMCdO3cQHR0t2u/j44OsrKxiKzUuWbIEVapU+aIqfhVx7tw5mX+XVh2xIuefPXsWxsbGmDp1Kho2bAgLCws8fvxY1L5u3bq4ePGiaF/Rf+vq6sLAwAAPHjwQEvWkW9HEtS5duiAnJweHDh3Cli1b0Lt37xJjbtCgAZ4/fw4FBQWZPqtXrw7gUyKmvb09fv75Z1SpUgVWVlZo2bIlrly5ggMHDpS7WpW1tTWuXbsmWkrz8zmTfuksXc62MqipqWHUqFEYP358pVeQrSg5OTn89NNPmDZtGt6/f19iu8aNG8PJyUlUCehbXq8k/fv3R3x8PPz9/WUS+4BPyRZVqlQpNpF43bp1yM7OFpaOLklBQQFWrVqFOnXqwNHRscIxfi01NTVMnz4dc+fOlUmWDAsLw7hx45CUlCRsV69eRYsWLUqs+FfWnH0tRUVFmdeHo6Mj8vPz8fLlS5nXcdEv6Pv37w87Ozts2rQJkyZNElWvK67f0tjZ2aGgoAAnTpwo9ri1tTUSEhJEr7kzZ85AXV0dtWrVAvDpS/2iS2RnZmbi4cOH5Y5BGjdQsXuGRCJBs2bNMHv2bFy5cgWKiorYvXt3sTHl5+fj+vXrFYqpouzt7REXF1dmu6pVq0JfXx9v3rzB4cOHi136V1NTEzVq1MDdu3dx6dIloU1iYiIKCgqwdOlSNG3aFJaWlvjzzz/LvGZBQQFyc3NlEkmVlZVhaGiIvLw87Ny584uWIZZWtQQ+zcHTp09x586dYts2a9YMeXl5okpc0rbSpeQBYOvWrQgICMDWrVvRqVMnUR+vXr1CSkoKpk2bhrZt28La2hpv3rwRtWnQoAHu3r2LmjVryryWpD9ecXZ2lnm8YmNjRZXWpMmXd+/exdGjR7+42uyNGzfQunVr9O3bt9j3g3fv3slUZpbedwoLC6Gurg4TE5MSn1/W1tZ48uSJ6Dn/+ftycfvz8vKQmJgofMZxdnZGcnKyKNkrNjYWGhoawjLzZ86cQb9+/eDl5QU7Ozvo6enh0aNHQvuy7inllZSUhGrVqgmJQeV9fZWkvHP07NkzuLq6wsnJCRERETKPi7W1Nc6fPy/a93k/5WlTmmbNmuHevXui1+udO3egr68vSuor7hoWFhai96zSPtNOnjwZ165dE703Ap+qCkZERJQ7XmdnZ5w8eVKU5B4bG4u6desKVYnLOybg05LJNWvWlHntv3v3DoBsFXN5eflSk+STkpIgJydXbNX+kpT1mqzomCri6dOnePXqlZBE6OzsjPT0dNHfg8eOHUNBQYHohyXx8fHo1KkTFi5ciEGDBon6LOseUlRYWBh++OEHmYS9nTt34urVq8JzRbrc96lTpzB8+HAAn+69KSkpMvddc3NzyMnJlet1WJ6/M4ojfRyk70fAp8T+ou+R586dg5ycXKmJuEXf08rDyckJVapUEc1tSkoKUlNThfeT8txbi5OUlCQ8DyrrvY+IiIiIiIiIiIiIiOhb+G4VMAFgzZo1aNasGRo3bozg4GDY29sjLy8PsbGxWLt2LW7duoWxY8ciMDAQVlZWaNeuHbKzs7F69Wq8efMGAwYMAPDpy5mZM2eiT58+qFevHhQVFXHixAmEh4dj0qRJ3yR2XV1djB07FosXLxbtd3Z2xqhRozBhwgR8/PgRXbt2RW5uLn777TesXLkSK1as+ObLmp05cwaLFi1C165dERsbi5iYGPz+++/lPj8mJgYNGzZE8+bNERUVhQsXLgiVPi0sLJCamoro6Gg0atQIv//+u5DwIzVixAgMHDgQDRs2hIuLC7Zt24Zr166JKovNnj0bI0eOhKamJtzd3fHhwwdcunQJb968EZaBq1q1Krp27Yrp06fj1q1bpSbAubm5wdnZGV27dsWiRYuEpJzff/8dXl5eQvU0V1dXrF69Gj169ADwKRHY2toa27Ztw5o1a8o1Pz/++COmTp2KgQMHYsqUKXj06BGWLFkiamNsbAyJRIIDBw7Aw8MDKioqlVLBa/DgwZgzZw527twpjAH49KXk8+fPRW21tLTKXW2nsLBQ5nwAqFmzpswX8FI9e/bEhAkTsGbNGowfP77EvkePHg0vLy9MnDhRWAbxW16vOO7u7vjrr79KrNxWu3ZtLFq0COPGjYOysjL69OmDKlWqYO/evfjpp58wbtw4mWqt0jl/9+4drl+/jhUrVuDChQv4/fffRckf5RlrRkaGkPghpaOjU+F7xaBBg7B8+XJs2bJFiDcpKQmXL19GVFQUrKysRO19fX0RHByMkJAQKCiI3w7KmjOp9PR0mfGpq6ujatWqpZ5nYmIiLHfp4OAAVVVVWFpaonfv3vD398fSpUvh6OiIv/76C3FxcbC3t0enTp2wZs0aJCQk4Nq1azAyMsLvv/+O3r1749y5c1BUVCy236JVEYuLo2/fvujfvz9WrVoFBwcHPH78GC9fvoS3tzeGDRuGFStWYMSIEQgKCkJKSgpmzpyJsWPHCo9fmzZtEBkZCU9PT2hpaWHGjBkVTlqt6D3j/PnziIuLQ/v27VGzZk2cP38ef/31l5BY1KZNG4wdOxa///47zMzMsGzZMuGHDd/KlClTYGdnh2HDhmHIkCFQVFTE8ePH0bNnT1SvXh2HDx9GYWEh6tati3v37mHChAmwsrJCQECA0EdMTAxq1KiB2rVrIzk5GaNGjULXrl2F5arNzc2Rm5uL1atXw9PTE2fOnJGp+hYVFYUqVarAzs4OSkpKuHTpEqZMmYJevXoJ1T3Pnz+PZ8+eoX79+nj27BlmzZqFgoICYYny0sbYsWNH1K5dG2/fvsWWLVsQHx+Pw4cPAwBatWqFli1bonv37li2bBnMzc1x+/ZtSCQSuLu7w83NDQ0aNED//v2xYsUKFBQUYPjw4WjXrp3wo5ItW7agb9++WLlyJZo0aSK8vlRUVKCpqYlq1apBR0cHGzZsgL6+PlJTUzF58mRRnL1798bixYvRpUsXBAcHo1atWnj8+DF27dqFiRMnolatWhg1ahRatWqFpUuXolOnToiOjsalS5eEioe5ubno0aMHLl++jAMHDiA/P1+IRVtbW0iwSk1NxevXr5Gamor8/HzhXmZubg41NTVcv34dbdq0QYcOHTB27FihD2klUuBTVbOBAwdi7dq1wnLHo0ePRuPGjYWqxLNmzcKQIUNQs2ZNoSrvmTNnMGLECLi5ucHS0hJ9+/bF4sWLkZmZialTpxb7GK5ZswYWFhawtrbG8uXL8ebNG/Tv3x8A0L59e9SrVw99+vTBokWL8Pz5c0ybNg3Dhw8XEiEtLCywa9cueHp6QiKRYPr06aIEtLLuKcXZv38/Xrx4gaZNm0JZWRmxsbGYN2+e6L1u5syZaNu2LczMzODj44O8vDwcPHhQ+JwrfQykyVYpKSkA/q9CXnnmSJp8aWxsjCVLluCvv/4SjkmT4EeOHIlmzZphyZIl6NKlCw4fPixafhwARo0ahX79+qFhw4Zo1qwZoqKicOPGjXJVmAWAoUOH4ueff8aoUaMwYsQI3L17F/PmzROWY5dKTU3F2LFjMXjwYFy+fBmrV6+W+SFFaZ+JpXPzudq1a4t+EHTv3j1kZWXh+fPneP/+vfAcl/7N8eOPP2L27NkIDAzEpEmTcP36daxcuRLLly+v8JgKCgoQERGBvn37yrwvW1lZwdzcHIMHD8aSJUugo6ODPXv2IDY2FgcOHADwqVL9+fPn0bp1a6irqyMhIQFjxoyBn5+fkAwKfKpI+/HjR7x+/Rpv374VxlS/fn0A5XtNlmdMWVlZuHfvnvDvhw8fIikpCdra2qhdu7ZQMbJ79+7Q09PD/fv3MXHiRJibm6NDhw4APiUkuru7Y+DAgVi3bh1yc3MRFBQEHx8fIZbjx4+jc+fOGDVqFLp37y7cZxQVFaGtrQ2g9HtI0cf65MmTOHjwoMzzwszMTPTvv//+W4hPWvlxxowZ6Ny5M2rXro0ePXpATk4OV69exfXr1xESElKu12F5/s44ePAgXrx4gUaNGkFNTQ03btzAhAkT0KxZM5iYmAjtlJWV0bdvXyxZsgSZmZkYOXIkvL29hef9/Pnz0bBhQ5iZmeHDhw84ePAgNm/ejLVr1wp9lHVv0dTURGBgIMaOHQttbW1oaGhgxIgRcHZ2RtOmTQGU7966YsUK1KlTBzY2NsjJycHGjRtx7NgxHDlyBAAq7b2PiIiIiIiIiIiIiIjoW/huFTCBT0vMXb58Ga1bt8a4ceNga2uLdu3aIS4uTvjix9fXFxs3bkR4eDicnJzg7u6O58+f4+TJk9DV1QUA1KpVCyYmJpg9ezaaNGmCBg0aYOXKlZg9e3aJX8BXhvHjxxebILNixQr88ssv2Lp1K2xtbdGwYUOcPHkSe/bsEX3J962MGzcOly5dgqOjI0JCQrBs2TLhS8zymD17NqKjo2Fvb49ff/0VW7duFaqT/PDDDxgzZgyCgoJQv359nD17FtOnTxed37t3b0yZMgXjx49HgwYN8PDhQ/Tr10+UDDhgwABs3LgRERERsLOzQ6tWrRAZGSn6wlval7RSX+3atUuMWSKR4ODBg2jZsiUCAgJgaWkJHx8fPH78WHieAJ+SY/Lz80XL6rm6usrsK42amhr279+P5ORkODo6YurUqVi4cKGojaGhIWbPno3JkydDV1cXQUFB5eq7LNra2vD39xeShaTc3NyE5SCl2549e8rdr3Q54M+3z5d8LEpBQQFBQUFYtGhRqZVm3d3dUadOHVHVs295veJIJBJUr1691IpMo0ePxu7du3Hq1Ck0bNgQtra22LJlC9auXSvzxTfwf3NuZ2eHyZMnCxWLPl+qvDxjjY+Ph6Ojo2ibPXt2hcYIfFo6es6cOaKqSWFhYahXr55M8iUAeHl54eXLl8UmGpRnzgAgICBAZmyrV68uM1YXFxcMGTIEvXr1Qo0aNbBo0SIAnyp/+fv7Y9y4cahbty66du2Kixcvonbt2rh9+zYmTJiAX375RUhO/eWXX/D3338L96GS+i3N2rVr0aNHDwwbNgxWVlYYOHCg8BwzNDTEwYMHceHCBTg4OGDIkCEIDAwULaE8ZcoUtGrVCp07d0anTp3QtWtXmUSNslT0nqGhoYGTJ0/Cw8MDlpaWmDZtGpYuXYqOHTsC+FQltG/fvvD390erVq1gamoq89ysbJaWljhy5AiuXr2Kxo0bw9nZGXv37hWSiDIyMjB8+HBYWVnB398fzZs3x+HDh0VLnqelpaFPnz6wsrLCyJEj0adPH2zdulU47uDggGXLlmHhwoWwtbVFVFQU5s+fL4pDQUEBCxcuROPGjWFvb4/Zs2cjKChIqFYGADk5OZg2bRrq1asHLy8vGBoa4vTp0zJLEX/u5cuX8Pf3R926ddG2bVtcvHgRhw8fRrt27YQ2O3fuRKNGjeDr64t69eph4sSJQmVTOTk57N+/H9WrV0fLli3RqVMnWFtbi6ppb9iwAXl5eRg+fLjodTVq1Cihj+joaCQmJsLW1hZjxoyR+TGIqqoqTp48idq1a6Nbt26wtrZGYGAgcnJyhKRqFxcXbNmyBRs2bICDgwN27NiBPXv2wNbWFsCnZLx9+/bh6dOnqF+/viiWs2fPCteaMWMGHB0dMXPmTGRlZQn3sEuXLgH4tJzvX3/9hd9++03UR6NGjYQ++vXrh2XLluHnn3+Gra0tevbsibp164qWYO7bt6/w+crGxgadO3fG3bt3hTnZvXs33r9/j8aNG2PAgAElVl5esGABFixYAAcHB5w+fRr79u0TKmXLy8vjwIEDkJeXh7OzM/z8/ODv74/g4GDh/GXLlqFatWpwcXGBp6cnOnTogAYNGoiuUdo9pThVqlTBmjVr4OzsjPr162P9+vVYtmwZZs6cKbRxdXVFTEwM9u3bh/r166NNmzaiJX337dsHR0dHoWqij48PHB0dhQTl8sxRbGws7t27h7i4ONSqVUv0eEk1bdoUoaGhWLlyJRwcHHDkyBGZJeV79eqF6dOnY+LEiXBycsLjx48xdOjQEsf/OSMjIxw+fBgXL16Evb09Ro4ciVGjRskkW/n7+wvjGT58OEaNGiVT+fBrPxMDnz6zOjo6Yv369bhz547wHJcmpGlqauLIkSN4+PAhnJycMG7cOMyYMUMUS3nHdPToUaSmpgpJwUVVqVIFBw8eRI0aNeDp6Sl8Tt+0aRM8PDwAfFpOOTo6Gq1atYKNjQ3mzp2LMWPGyCwl7+HhAUdHR+zfv1/0GUSqPK/J8oxJOvfSvseOHQtHR0fMmDEDwKfX3LVr1/DDDz/A0tISgYGBcHJywqlTp0TLQkt/RNK2bVt4eHigefPmojFt2rQJ7969w/z580XP26JLgZd2D5EKDw9HrVq1hKT/iurQoQMOHDiAI0eOoFGjRmjatCmWL18uVDguz+uwPH9nqKioIDQ0FM2bN4e1tTXGjBmDH374QUjElTI3N0e3bt3g4eGB9u3bw97eHr/88otwPDs7G8OGDYONjQ2aNWuGnTt34rfffhN+5AiUfW8BPlWN7dy5M7p3746WLVtCT09P9Fwpz73148ePGDdunPB34dWrV3H06FG0bdtWmLvKeO8jIiIiIiIiIiIiIiL6FiSF33stY/pXkUgk2L17N7p27Vqp/bZr1w56enrYvHlzpfZLRERERERE9LUyMzOhqakJhxHrIK+k8r3DISIiIvpHJC72/94hEBEREREREf0rSb83yMjIKLPYw3ddgpz+O7179w7r1q1Dhw4dIC8vj61bt+Lo0aOIjY393qERERERERERERERERERERERERERVYrvugT5v4mamlqJ26lTpyr9eh07dizxevPmzav06wGflu8r6Zo2NjaVdp2iy4E7OTlh//792LlzJ9zc3CrtGt/SvHnzSpwn6fK+X+vUqVOlPueodP/EY/S9/VOv12/le9zjivOf+lpLTU0tNe7U1NR/PKZ/y2NKRP/Z/unP3ERERERERERERERERERE3xKXIP//7t27V+IxQ0NDqKhU7hJkz549w/v374s9pq2tDW1t7Uq9HgC8ffsWL168KPZYlSpVYGxsXOnX/E/0+vVrvH79uthjKioqMDQ0/OprvH//Hs+ePSvxuLm5+Vdf47/ZP/EYfW//6a/X73GPK85/6mstLy8Pjx49KvG4iYkJFBT+2SLW/5bHlIj+s/3Tn7mJiMqLS5ATERHR/yIuQU5ERERERERUvIosQc4ETCIiIiIiIiL6n8YETCIiIvpfxARMIiIiIiIiouJVJAGTS5ATEREREREREREREREREREREREREVXQP7t+KRERERERERHRv9TJEN8yf8lKREREREREREREREQkxQqYREREREREREREREREREREREREREQVxARMIiIiIiIiIiIiIiIiIiIiIiIiIqIKYgImEREREREREREREREREREREREREVEFMQGTiIiIiIiIiIiIiIiIiIiIiIiIiKiCmIBJRERERERERERERERERERERERERFRBCt87ACIiIiIiIiKif4OW07ZCXknle4dBRERE9E0lLvb/3iEQERERERER/ddgBUwiIiIiIiIiIiIiIiIiIiIiIiIiogpiAiYRERERERERERERERERERERERERUQUxAZOIiIiIiIiIiIiIiIiIiIiIiIiIqIKYgElEREREREREREREREREREREREREVEFMwCQiIiIiIiIiIiIiIiIiIiIiIiIiqiAmYBIRERERERERERERERERERERERERVRATMImIiIiIiP6l+vXrh65du37vMOgL8LEjIiIiIiIiIiIiIiL678cETCIiIiIiov9SJiYmWLFixfcO4z/Ko0ePIJFIkJSU9L1DqTSurq4YPXr09w7jm3r9+jV69+4NDQ0NaGlpITAwEFlZWd87LCIiIiIiIiIiIiIi+i/HBEwiIiIiIqLv4OPHj987BABAfn4+CgoKvncYRF+ld+/euHHjBmJjY3HgwAGcPHkSgwYN+t5hERERERERERERERHRfzkmYBIREREREX3G1dUVI0aMwOjRo1GtWjXo6uoiNDQU2dnZCAgIgLq6OszNzfHHH38I51y/fh0dO3aEmpoadHV10adPH/z999+iPoOCgjB69GhUr14dHTp0AADcuHEDnTt3hoaGBtTV1dGiRQvcv39fFM+SJUugr68PHR0dDB8+HLm5ueUaw+PHjzFmzBhIJBJIJBIAQGRkJLS0tLBv3z7Uq1cPSkpKSE1NLbUv6XLa8+bNg66uLrS0tBAcHIy8vDxMmDAB2traqFWrFiIiIkTnTZo0CZaWllBVVYWpqSmmT58uxF5YWAg3Nzd06NABhYWFAD5VMaxVqxZmzJhR5vjy8/MRGBiIOnXqQEVFBXXr1sXKlSu/Ou46deoAABwdHSGRSODq6lquWMaOHQstLS3o6Ohg4sSJwpikDh06hObNmwttOnfuLHqc27Rpg6CgINE5f/31FxQVFREXFwcA+OWXX2BhYQFlZWXo6uqiR48eZcbWr18/nDhxAitXrhSeB48ePQIAnDhxAo0bN4aSkhL09fUxefJk5OXlldkn8On5NXLkSEycOBHa2trQ09PDrFmzRG1SU1PRpUsXqKmpQUNDA97e3njx4gUAICMjA/Ly8rh06RIAoKCgANra2mjatKlw/m+//QYjI6MyY7l16xYOHTqEjRs3okmTJmjevDlWr16N6Oho/Pnnn+UaDxERERERERERERER0ZdgAiYREREREVExNm3ahOrVq+PChQsYMWIEhg4dip49e8LFxQWXL19G+/bt0adPH7x79w7p6elo06YNHB0dcenSJRw6dAgvXryAt7e3TJ+Kioo4c+YM1q1bh2fPnqFly5ZQUlLCsWPHkJiYiP79+4uS4I4fP4779+/j+PHj2LRpEyIjIxEZGVlm/Lt27UKtWrUQHByMtLQ0pKWlCcfevXuHhQsXYuPGjbhx4wZq1qxZZn/Hjh3Dn3/+iZMnT2LZsmWYOXMmOnfujGrVquH8+fMYMmQIBg8ejKdPnwrnqKurIzIyEjdv3sTKlSsRGhqK5cuXAwAkEgk2bdqEixcvYtWqVQCAIUOGwNDQsFwJmAUFBahVqxZiYmJw8+ZNzJgxAz/99BO2b9/+VXFfuHABAHD06FGkpaVh165dZcaydOlSREZGIjw8HKdPn8br16+xe/duUZvs7GyMHTsWly5dQlxcHOTk5ODl5SVUHx0wYAC2bNmCDx8+COf89ttvMDQ0RJs2bXDp0iWMHDkSwcHBSElJwaFDh9CyZcsyY1u5ciWcnZ0xcOBA4XlgZGSEZ8+ewcPDA40aNcLVq1exdu1ahIWFISQkpMw+pTZt2oSqVavi/PnzWLRoEYKDgxEbGwvg0+PTpUsXvH79GidOnEBsbCwePHiAXr16AQA0NTVRv359xMfHAwCSk5MhkUhw5coVYenwEydOoFWrVmXGkZCQAC0tLTRs2FDY5+bmBjk5OZw/f77c4yEiIiIiIiIiIiIiIqooSeHnZTmIiIiIiIj+x7m6uiI/Px+nTp0C8KnCoaamJrp164Zff/0VAPD8+XPo6+sjISEBR48exalTp3D48GGhj6dPn8LIyAgpKSmwtLSEq6srMjMzcfnyZaHNTz/9hOjoaKSkpKBKlSoycfTr1w/x8fG4f/8+5OXlAQDe3t6Qk5NDdHR0meMwMTHB6NGjMXr0aGFfZGQkAgICkJSUBAcHh3LNhzSOBw8eQE7u0+/4rKysULNmTZw8eVI0Rxs3boSPj0+x/SxZsgTR0dFC1UMAiImJgb+/P0aPHo3Vq1fjypUrsLCwKFdcnwsKCsLz58+xY8eOL4770aNHqFOnDq5cuYL69euX67oGBgYYM2YMJkyYAADIy8tDnTp14OTkhD179hR7zt9//40aNWogOTkZtra2yMnJgYGBAdatWyck7jo4OKBbt26YOXMmdu3ahYCAADx9+hTq6uoVmhdXV1fUr18fK1asEPZNnToVO3fuxK1bt4TqqL/88gsmTZqEjIwMYb5K67PoawQAGjdujDZt2mDBggWIjY1Fx44d8fDhQ6GK5c2bN2FjY4MLFy6gUaNGGDduHFJSUnDgwAGsXLkSCQkJuH37NhYsWAB3d3dYWFhg4sSJGDhwYKmxzJs3D5s2bUJKSopof82aNTF79mwMHTpU5pwPHz6Ikl0zMzNhZGQEhxHrIK+kUur1iIiIiP7TJS72/94hEBEREREREf2rZWZmQlNTExkZGdDQ0Ci1LStgEhERERERFcPe3l74b3l5eejo6MDOzk7Yp6urCwB4+fIlrl69iuPHj0NNTU3YrKysAEC0zLSTk5PoGklJSWjRokWxyZdSNjY2QvIlAOjr6+Ply5dfNTZFRUXR+MrDxsZGlJSnq6srmg/pHBWNbdu2bWjWrBn09PSgpqaGadOmySx33rNnT3h5eWHBggVYsmRJhZIv16xZAycnJ9SoUQNqamrYsGGDTP9fEndFZGRkIC0tDU2aNBH2KSgoiKoxAsDdu3fh6+sLU1NTaGhowMTEBACEeJWVldGnTx+Eh4cDAC5fvozr16+jX79+AIB27drB2NgYpqam6NOnD6KiovDu3bsvihn4tGy3s7OzkHwJAM2aNUNWVpaoimlpPn8OFX1u3rp1C0ZGRqIlxOvVqwctLS3cunULANCqVSucPn0a+fn5OHHiBFxdXeHq6or4+Hj8+eefuHfvXrmWgP8S8+fPh6amprCVZ6lzIiIiIiIiIiIiIiKizzEBk4iIiIiIqBifJ0VKJBLRPmniWkFBAbKysuDp6YmkpCTRdvfuXdEy0VWrVhX1qaJSdqW94uKQLlv9pVRUVESJd+VR1nx8HltCQgJ69+4NDw8PHDhwAFeuXMHUqVPx8eNH0Tnv3r1DYmIi5OXlcffu3XLHEx0djfHjxyMwMBBHjhxBUlISAgICZPqvaNzfiqenJ16/fo3Q0FCcP39eWBq7aLwDBgxAbGwsnj59ioiICLRp0wbGxsYAPi3nfvnyZWzduhX6+vqYMWMGHBwckJ6e/k3jLs3XzmPLli3x9u1bXL58GSdPnhQlYJ44cQIGBgblSsjV09OTSaDNy8vD69evoaenV+w5U6ZMQUZGhrA9efKk3HETERERERERERERERFJMQGTiIiIiIjoKzVo0AA3btyAiYkJzM3NRdvnSZdF2dvb49SpU8jNzf0mcSkqKiI/P/+b9F2Ws2fPwtjYGFOnTkXDhg1hYWGBx48fy7QbN24c5OTk8Mcff2DVqlU4duxYufo/c+YMXFxcMGzYMDg6OsLc3FxUbfRLKSoqAkC5501TUxP6+vpCQiXwKfkvMTFR+PerV6+QkpKCadOmoW3btrC2tsabN29k+rKzs0PDhg0RGhqKLVu2oH///qLjCgoKcHNzw6JFi3Dt2jU8evSoXPNV3PPA2toaCQkJKCwsFPadOXMG6urqqFWrVrnGXhpra2s8efJElNh48+ZNpKeno169egAALS0t2Nvb4+eff0aVKlVgZWWFli1b4sqVKzhw4ABatWpVrms5OzsjPT1dNOfHjh1DQUGBqDJpUUpKStDQ0BBtREREREREREREREREFcUETCIiIiIioq80fPhwvH79Gr6+vrh48SLu37+Pw4cPIyAgoNREvqCgIGRmZsLHxweXLl3C3bt3sXnzZqSkpFRKXCYmJjh58iSePXuGv//+u1L6LC8LCwukpqYiOjoa9+/fx6pVq7B7925Rm99//x3h4eGIiopCu3btMGHCBPTt27fY5MTi+r906RIOHz6MO3fuYPr06bh48eJXx12zZk2oqKjg0KFDePHiBTIyMso8Z9SoUViwYAH27NmD27dvY9iwYaLKlNWqVYOOjg42bNiAe/fu4dixYxg7dmyxfQ0YMAALFixAYWEhvLy8hP0HDhzAqlWrkJSUhMePH+PXX39FQUEB6tatW2Z8JiYmOH/+PB49eoS///4bBQUFGDZsGJ48eYIRI0bg9u3b2Lt3L2bOnImxY8eKlmz/Um5ubrCzs0Pv3r1x+fJlXLhwAf7+/mjVqpVoeXZXV1dERUUJyZba2tqwtrbGtm3byp2AaW1tDXd3dwwcOBAXLlzAmTNnEBQUBB8fHxgYGHz1WIiIiIiIiIiIiIiIiErCBEwiIiIiIqKvZGBggDNnziA/Px/t27eHnZ0dRo8eDS0trVKT2XR0dHDs2DFkZWWhVatWcHJyQmhoqMzSzl8qODgYjx49gpmZGWrUqFEpfZbXDz/8gDFjxiAoKAj169fH2bNnMX36dOH4X3/9hcDAQMyaNQsNGjQAAMyePRu6uroYMmRImf0PHjwY3bp1Q69evdCkSRO8evUKw4YN++q4FRQUsGrVKqxfvx4GBgbo0qVLmeeMGzcOffr0Qd++feHs7Ax1dXVR8qScnByio6ORmJgIW1tbjBkzBosXLy62L19fXygoKMDX1xfKysrCfi0tLezatQtt2rSBtbU11q1bh61bt8LGxqbM+MaPHw95eXnUq1cPNWrUQGpqKgwNDXHw4EFcuHABDg4OGDJkCAIDAzFt2rRyzFLZJBIJ9u7di2rVqqFly5Zwc3ODqakptm3bJmrXqlUr5Ofnw9XVVdjn6uoqs68sUVFRsLKyQtu2beHh4YHmzZtjw4YNlTIWIiIiIiIiIiIiIiKikkgKi643RkRERERERETfjTRh9uLFi0JiKn17mZmZ0NTUhMOIdZBXUvne4RARERF9U4mL/b93CERERERERET/atLvDTIyMqChoVFqW4V/KCYiIiIiIiIiKkFubi5evXqFadOmoWnTpky+JCIiIiIiIiIiIiIi+g/AJciJiIiIiIj+A506dQpqamolbhVRWj+nTp36RiMo3ZAhQ0qMqTxLlFemf2J+zpw5A319fVy8eBHr1q0r93mpqamlxpeamlrhWL5Fn19j3rx5JcbSsWPHfzQWIiIiIiIiIiIiIiKiorgEORERERER0X+g9+/f49mzZyUeNzc3L3df9+7dK/GYoaEhVFT++SWZX758iczMzGKPaWhooGbNmv9YLP/G+ZHKy8vDo0ePSjxuYmICBYWKLX7xLfr8Gq9fv8br16+LPaaiogJDQ8OvvgaXICciIqL/JVyCnIiIiIiIiKh0FVmCnAmYRERERERERPQ/jQmYRERE9L+ECZhEREREREREpatIAiaXICciIiIiIiIiIiIiIiIiIiIiIiIiqiAmYBIRERERERERERERERERERERERERVZDC9w6AiIiIiIiIiOjf4GSIb5lLiRAREREREREREREREUmxAiYRERERERERERERERERERERERERUQUxAZOIiIiIiIiIiIiIiIiIiIiIiIiIqIKYgElEREREREREREREREREREREREREVEFMwCQiIiIiIiIiIiIiIiIiIiIiIiIiqiAmYBIRERERERERERERERERERERERERVZDC9w6AiIiIiIiIiOjfoOW0rZBXUvneYRAREdH/mMTF/t87BCIiIiIiIiL6QqyASURERERERERERERERERERERERERUQUzAJCIiIiIiIiIiIiIiIiIiIiIiIiKqICZgEhERERERERERERERERERERERERFVEBMwiYiIiIiIiIiIiIiIiIiIiIiIiIgqiAmYREREREREREREREREREREREREREQVxARMIiIiIiIiIiIiIiIiIiIiIiIiIqIKYgImEREREREREREREREREREREREREVEFMQGTiIiIiIiIEBkZCS0trQqd4+rqColEAolEAiUlJRgaGsLT0xO7du2SaStt9/kWHR0NAIiPjxftV1FRgY2NDTZs2FBmH9Jt1qxZpcb76NEjSCQSJCUlldjm7Nmz8PDwQLVq1aCsrAw7OzssW7YM+fn5xba3srKCkpISnj9/XuL8SMcotWLFCpiYmJQaq1RkZKRojGpqanBycip2jgFg69atkJeXx/Dhw2WOSec4PT29XNcuatasWZBIJHB3d5c5tnjxYkgkEri6usoce/r0KRQVFWFrayvs+/jxI6pXr44FCxYUe605c+ZAV1cXubm5MuOXbsrKykL7fv36CfurVKmCOnXqYOLEicjJyanwOImIiIiIiIiIiIiIiCqCCZhERERERET0xQYOHIi0tDTcv38fO3fuRL169eDj44NBgwbJtI2IiEBaWppo69q1q6hNSkoK0tLScPPmTQwePBhDhw5FXFwcAIjOW7FiBTQ0NET7xo8f/1Vj2b17N1q1aoVatWrh+PHjuH37NkaNGoWQkBD4+PigsLBQ1P706dN4//49evTogU2bNhXbp7KyMqZNm4bc3NwvjqvoOK9cuYIOHTrA29sbKSkpMm3DwsIwceJEbN26tdITEPX19XH8+HE8ffpUtD88PBy1a9cu9pzIyEh4e3sjMzMT58+fBwAoKirCz88PERERMu0LCwsRGRkJf39/VKlSBQBkHue0tDQ8fvxYdJ67uzvS0tLw4MEDLF++HOvXr8fMmTMrY9hEREREREREREREREQlYgImERERERHRv8ihQ4fQvHlzaGlpQUdHB507d8b9+/cBfKocGBQUBH19fSgrK8PY2Bjz588H8ClxbdasWahduzaUlJRgYGCAkSNHCv1++PAB48ePh6GhIapWrYomTZogPj4ewKfKiAEBAcjIyCh3NUkpVVVV6OnpoVatWmjatCkWLlyI9evXIzQ0FEePHhW11dLSgp6enmgrWskQAGrWrAk9PT3UqVMHI0eORJ06dXD58mUAEJ2nqakJiUQi2qempvYlUw4AyM7OxsCBA/HDDz9gw4YNqF+/PkxMTDBgwABs2rQJO3bswPbt20XnhIWF4ccff0SfPn0QHh5ebL++vr5IT09HaGjoF8dWdJwWFhYICQmBnJwcrl27Jmr38OFDnD17FpMnT4alpWWJVTK/VM2aNdG+fXtRsunZs2fx999/o1OnTjLtCwsLERERgT59+uDHH39EWFiYcCwwMBB37tzB6dOnReecOHECDx48QGBgoLDv88dZT08Purq6ovOUlJSgp6cHIyMjdO3aFW5uboiNja2soRMRERERERERERERERWLCZhERERERET/ItnZ2Rg7diwuXbqEuLg4yMnJwcvLCwUFBVi1ahX27duH7du3IyUlBVFRUcJS1jt37hQq/929exd79uyBnZ2d0G9QUBASEhIQHR2Na9euoWfPnnB3d8fdu3fh4uIiU1Hya6pJ9u3bF9WqVfuqBMDCwkIcOnQIqampaNKkyRf3U15HjhzBq1evih23p6cnLC0tsXXrVmHf27dvERMTAz8/P7Rr1w4ZGRk4deqUzLkaGhqYOnUq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LkFORERERERERERERERERERERERERFRBTMAkIiIiIiIiIiIiIiIiIiIiIiIiIqogLkFORERERERERATgZIgvNDQ0vncYRERERERERERERET0H4IVMImIiIiIiIiIiIiIiIiIiIiIiIiIKogJmEREREREREREREREREREREREREREFcQETCIiIiIiIiIiIiIiIiIiIiIiIiKiCmICJhERERERERERERERERERERERERFRBTEBk4iIiIiIiIiIiIiIiIiIiIiIiIioghS+dwBERERERERERP8GLadthbySyvcOg4iIiL6RxMX+3zsEIiIiIiIiIvovwwqYREREREREREREREREREREREREREQVxARMIiIiIiIiIiIiIiIiIiIiIiIiIqIKYgImEREREREREREREREREREREREREVEFMQGTiIiIiIiIiIiIiIiIiIiIiIiIiKiCmIBJRERERERERERERERERERERERERFRBTMAkIiIiIiIiIiIiIiIiIiIiIiIiIqogJmASEREREREREREREREREREREREREVUQEzCJiIiIiIio0kVGRkJLS+uLzt26dSvk5eUxfPjwYo+HhobCwcEBampq0NLSgqOjI+bPnw8AMDExgUQiKXHr169fmdc/ceIE2rRpA21tbaiqqsLCwgJ9+/bFx48fZdoOHjwY8vLyiImJEfYtXboU1apVQ05Ojkz7d+/eQUNDA6tWrSo13gULFgAAHj16JNqvra2NVq1a4dSpU2WO43NPnz6FoqIibG1tZY5Jr5OUlCRzzNXVFaNHjxb+LY05Ojpapq2NjQ0kEgkiIyPLFVPR8cvLy8PAwACBgYF48+ZNse2trKygpKSE58+flxknERERERERERERERHRt8YETCIiIiIiIvpXCQsLw8SJE7F161aZJMbw8HCMHj0aI0eORFJSEs6cOYOJEyciKysLAHDx4kWkpaUhLS0NO3fuBACkpKQI+1auXFnqtW/evAl3d3c0bNgQJ0+eRHJyMlavXg1FRUXk5+eL2r579w7R0dGYOHEiwsPDhf19+vRBdnY2du3aJdP/jh078PHjR/j5+Qn7goODhfik24gRI0TnHT16FGlpaTh58iQMDAzQuXNnvHjxohyz+X8iIyPh7e2NzMxMnD9/vkLnfs7IyAgRERGifefOncPz589RtWrVCvUlHX9qaiqioqJw8uRJjBw5Uqbd6dOn8f79e/To0QObNm36qviJiIiIiIiIiIiIiIgqAxMwiYiIiIiI/osdOnQIzZs3h5aWFnR0dNC5c2fcv38fAPDx40cEBQVBX18fysrKMDY2FipJFhYWYtasWahduzaUlJRgYGAgSor78OEDxo8fD0NDQ1StWhVNmjRBfHw8ACA+Ph4BAQHIyMgQqhvOmjWrXPE+fPgQZ8+exeTJk2FpaSmTxLhv3z54e3sjMDAQ5ubmsLGxga+vL+bOnQsAqFGjBvT09KCnpwdtbW0AQM2aNYV9mpqapV7/yJEj0NPTw6JFi2BrawszMzO4u7sjNDQUKioqorYxMTGoV68eJk+ejJMnT+LJkyfC9Tw9PUVJmVLh4eHo2rWrEBsAqKurC/FJt8+TGHV0dKCnpwdbW1v89NNPFU6iLCwsREREBPr06YMff/wRYWFh5T63OL1798aJEyeEMUvH1rt3bygoKFSoL+n4DQ0N0bp1a/Tt2xeXL1+WaRcWFoYff/wRffr0KXZuiYiIiIiIiIiIiIiI/mlMwCQiIiIiIvovlp2djbFjx+LSpUuIi4uDnJwcvLy8UFBQgFWrVmHfvn3Yvn07UlJSEBUVBRMTEwDAzp07sXz5cqxfvx53797Fnj17YGdnJ/QbFBSEhIQEREdH49q1a+jZsyfc3d1x9+5duLi4YMWKFdDQ0BAqOo4fP75c8UZERKBTp07Q1NSEn5+fTKKgnp4ezp07h8ePH1faHH3ev7TSZFnCwsLg5+cHTU1NdOzYUbTsdmBgII4dOyaK88GDBzh58iQCAwO/OL7379/j119/BQAoKiqW+7zjx4/j3bt3cHNzg5+fH6Kjo5Gdnf3Fcejq6qJDhw5CJcp3795h27Zt6N+//xf3CQDPnj3D/v370aRJE9H+t2/fIiYmBn5+fmjXrh0yMjK+aBl2qQ8fPiAzM1O0ERERERERERERERERVRQTMImIiIiIiP6Lde/eHd26dYO5uTnq16+P8PBwJCcn4+bNm0hNTYWFhQWaN28OY2NjNG/eHL6+vgCA1NRU6Onpwc3NDbVr10bjxo0xcOBA4VhERARiYmLQokULmJmZYfz48WjevDkiIiKgqKgITU1NSCQSoaKjmppambEWFBQgMjJSWJ7bx8cHp0+fxsOHD4U2M2fOhJaWFkxMTFC3bl3069cP27dvR0FBQaXMV8+ePeHr64tWrVpBX18fXl5e+Pnnn2US9O7evYtz586hV69eAAA/Pz9ERESgsLAQANChQwcYGBiIlumOjIyEkZER2rZtK+pr0qRJUFNTE22fJxe6uLhATU0NVatWxZIlS+Dk5CTTT2nCwsLg4+MDeXl52NrawtTUFDExMRWam8/1798fkZGRKCwsxI4dO2BmZob69etXuB/p+FVUVFCrVi1IJBIsW7ZM1CY6OhoWFhawsbGBvLw8fHx8vqqK5/z586GpqSlsRkZGX9wXERERERERERERERH972ICJhERERER0X+xu3fvwtfXF6amptDQ0BAqXKampqJfv35ISkpC3bp1MXLkSBw5ckQ4r2fPnnj//j1MTU0xcOBA7N69G3l5eQCA5ORk5Ofnw9LSUpQ0eOLECWF58y8RGxuL7OxseHh4AACqV6+Odu3aiZab1tfXR0JCApKTkzFq1Cjk5eWhb9++cHd3r5QkTHl5eURERODp06dYtGgRDA0NMW/ePNjY2CAtLU1oFx4ejg4dOqB69eoAAA8PD2RkZODYsWNCP3379hUSFAsKCrBp0yYEBARATk78p/iECROQlJQk2ho2bChqs23bNly5cgU7d+6Eubk5IiMjUaVKlXKNKT09Hbt27RISWwEUW120ojp16oSsrCycPHkS4eHhX1z9Ujr+a9euIS4uTug7Pz9faBMeHi4Tf0xMDN6+fftF15wyZQoyMjKErehS6kREREREREREREREROWl8L0DICIiIiIiom/H09MTxsbGCA0NhYGBAQoKCmBra4uPHz+iQYMGePjwIf744w8cPXoU3t7ecHNzw44dO2BkZISUlBQcPXoUsbGxGDZsGBYvXowTJ04gKysL8vLySExMhLy8vOh65al0WZKwsDC8fv0aKioqwr6CggJcu3YNs2fPFiUu2trawtbWFsOGDcOQIUPQokULnDhxAq1bt/7i6xdlaGiIPn36oE+fPpgzZw4sLS2xbt06zJ49G/n5+di0aROeP38OBYX/+7M6Pz8f4eHhQmXK/v37Y/78+Th27BgKCgrw5MkTBAQEyFyrevXqMDc3LzUeIyMjWFhYwMLCAnl5efDy8sL169ehpKRU5li2bNmCnJwc0bLe0qTQO3fuwNLSEhoaGgCAjIwMmfPT09Ohqakps19BQQF9+vTBzJkzcf78eezevbvMWIpTdPwWFhZYsWIFnJ2dcfz4cbi5ueHmzZs4d+4cLly4gEmTJgnn5efnIzo6WqjMWhFKSkrlmjsiIiIiIiIiIiIiIqLSMAGTiIiIiIjov9SrV6+QkpKC0NBQtGjRAgBw+vRpURsNDQ306tULvXr1Qo8ePeDu7o7Xr19DW1sbKioq8PT0hKenJ4YPHw4rKyskJyfD0dER+fn5ePnypdDv5xQVFUUVDMsT6969exEdHQ0bGxthf35+Ppo3b44jR47A3d292HPr1asHAMjOzi739SqiWrVq0NfXF/o/ePAg3r59iytXrogSUK9fv46AgACkp6dDS0sLZmZmaNWqFcLDw1FYWAg3NzcYGxt/dTw9evTAjBkz8Msvv2DMmDFltg8LC8O4cePQr18/0f5hw4YhPDwcCxYsgLa2NqpXr47ExES0atVKaJOZmYl79+7B0tKy2L779++PJUuWoFevXqhWrdpXjUtKOqfv378X4m/ZsiXWrFkjahcREYGwsLAvSsAkIiIiIiIiIiIiIiKqDEzAJCIiIiIi+i9VrVo16OjoYMOGDdDX10dqaiomT54sHF+2bBn09fXh6OgIOTk5xMTEQE9PD1paWoiMjER+fj6aNGkCVVVV/Pbbb1BRUYGxsTF0dHTQu3dv+Pv7Y+nSpXB0dMRff/2FuLg42Nvbo1OnTjAxMUFWVhbi4uLg4OAAVVVVqKqqlhjr5s2boaOjA29vb0gkEtExDw8PhIWFwd3dHUOHDoWBgQHatGmDWrVqIS0tDSEhIahRowacnZ2/es7Wr1+PpKQkeHl5wczMDDk5Ofj1119x48YNrF69GsCnhMBOnTrBwcFBdG69evUwZswYREVFYfjw4QCAwMBAIUEwMjKy2Gu+ffsWz58/F+1TVVUVqlJ+TiKRYOTIkZg1axYGDx5c6rwmJSXh8uXLiIqKgpWVleiYr68vgoODERISAgUFBYwdOxbz5s2Drq4umjZtilevXmHOnDmoUaMGunXrVmz/1tbW+Pvvv0uNoSzS8RcWFuLJkyeYOHEiatSoARcXF+Tm5mLz5s0IDg6Gra2t6LwBAwZg2bJluHHjhpC0+9dffyEpKUnUTl9fH7q6ul8cHxERERERERERERERUUnkym5CRERERERE/4nk5OQQHR2NxMRE2NraYsyYMVi8eLFwXF1dHYsWLULDhg3RqFEjPHr0CAcPHoScnBy0tLQQGhqKZs2awd7eHkePHsX+/fuho6MD4FP1QX9/f4wbNw5169ZF165dcfHiRdSuXRsA4OLigiFDhqBXr16oUaMGFi1aVGqs4eHh8PLykkm+BIDu3btj3759+Pvvv+Hm5oZz586hZ8+esLS0RPfu3aGsrIy4uDghtq/RuHFjZGVlYciQIbCxsUGrVq1w7tw57NmzB61atcKLFy/w+++/o3v37jLnysnJwcvLC2FhYaLYlZSUoKqqiq5duxZ7zRkzZkBfX1+0TZw4sdQ4+/bti9zcXPz888+ltgsLC0O9evVkki8BwMvLCy9fvsTBgwcBABMnTsTMmTOxcOFC2Nvbo3v37qhatSqOHz8uWhb+czo6OqUeL4t0/AYGBujcuTOqVq2KI0eOQEdHB/v27cOrV6/g5eUlc561tTWsra1F871lyxY4OjqKttDQ0C+OjYiIiIiIiIiIiIiIqDSSwsLCwu8dBBERERERERHR95KZmQlNTU04jFgHeaUvTyYlIiKif7fExf7fOwQiIiIiIiIi+g8g/d4gIyOjxBXLpFgBk4iIiIiIiIiIiIiIiIiIiIiIiIiogpiASURERERERN/cqVOnoKamVuL2T5k3b16JMXTs2PEfi6MylTavp06d+m5xRUVFlRiXjY3Nd4uLiIiIiIiIiIiIiIiosih87wCIiIiIiIjov1/Dhg2RlJT0vcPAkCFD4O3tXewxFZX/zKWnS5tXQ0PDfy6Qz/zwww9o0qRJsceqVKnyD0dDRERERERERERERERU+ZiASURERERERN+ciooKzM3Nv3cY0NbWhra29vcOo1L9G+a1OOrq6lBXV//eYRAREREREREREREREX0zXIKciIiIiIiIiIiIiIiIiIiIiIiIiKiCWAGTiIiIiIiIiAjAyRBfaGhofO8wiIiIiIiIiIiIiIjoPwQrYBIRERERERERERERERERERERERERVRATMImIiIiIiIiIiIiIiIiIiIiIiIiIKogJmEREREREREREREREREREREREREREFcQETCIiIiIiIiIiIiIiIiIiIiIiIiKiCmICJhERERERERERERERERERERERERFRBTEBk4iIiIiIiIiIiIiIiIiIiIiIiIioghS+dwBERERERERERP8GLadthbySyvcOg4iIiL5A4mL/7x0CEREREREREf0PYgVMIiIiIiIiIiIiIiIiIiIiIiIiIqIKYgImEREREREREREREREREREREREREVEFMQGTiIiIiIiIiIiIiIiIiIiIiIiIiKiCmIBJRERERERERERERERERERERERERFRBTMAkIiIiIiIiIiIiIiIiIiIiIiIiIqogJmASEREREREREREREREREREREREREVUQEzCJiIiIiIiIiIiIiIiIiIiIiIiIiCqICZhEREREREQkEhkZCS0trQqd4+rqColEAolEAiUlJRgaGsLT0xO7du2SaStt9/kWHR0NAIiPjxftV1FRgY2NDTZs2FBmH9Jt1qxZpcb76NEjSCQSJCUlldjm7Nmz8PDwQLVq1aCsrAw7OzssW7YM+fn5xba3srKCkpISnj9/XuL8SMcotWLFCpiYmJQaq1RkZKRojGpqanBycip2jgFg69atkJeXx/Dhw2WOSec4PT29XNcu6t27d5gyZQrMzMygrKyMGjVqoFWrVti7d69M26dPn0JRURG2trbCvo8fP6J69epYsGBBsf3PmTMHurq6yM3NlRmzdFNWVhba9+vXT9hfpUoV1KlTBxMnTkROTk6Fx0ZERERERERERERERFQRTMAkIiIiIiKiSjFw4ECkpaXh/v372LlzJ+rVqwcfHx8MGjRIpm1ERATS0tJEW9euXUVtUlJSkJaWhps3b2Lw4MEYOnQo4uLiAEB03ooVK6ChoSHaN378+K8ay+7du9GqVSvUqlULx48fx+3btzFq1CiEhITAx8cHhYWFovanT5/G+/fv0aNHD2zatKnYPpWVlTFt2jTk5uZ+cVxFx3nlyhV06NAB3t7eSElJkWkbFhaGiRMnYuvWrZWajDhkyBDs2rULq1evxu3bt3Ho0CH06NEDr169kmkbGRkJb29vZGZm4vz58wAARUVF+Pn5ISIiQqZ9YWEhIiMj4e/vjypVqsiMWbo9fvxYdJ67uzvS0tLw4MEDLF++HOvXr8fMmTMrbcxERERERERERERERETFYQImERERERHRv9ShQ4fQvHlzaGlpQUdHB507d8b9+/cBfKoiGBQUBH19fSgrK8PY2Bjz588H8CmJbdasWahduzaUlJRgYGCAkSNHCv1++PAB48ePh6GhIapWrYomTZogPj4ewKfKiAEBAcjIyCh3NUkpVVVV6OnpoVatWmjatCkWLlyI9evXIzQ0FEePHhW11dLSgp6enmgr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1Lt3b82fP1+zZs3SmTNnFB4ero4dO+ru3bvq0KGDpBdfGNWvX18//vijTpw4obNnzyogIECBgYGvFSSRGjly5FDv3r01bdo0k/JKlSqpZ8+e+vrrr+Xv769z587p1KlTGjx4sL777jv5+/sb2bb+Lrt379aECRMUERGhmTNnauXKlerZs2eqj1+5cqUCAwMVERGhYcOGaf/+/erWrZukF1/IXb58WcuWLdO5c+c0bdo0rVmzxuT47t27KyAgQAsWLNCZM2c0atQoHT161GQJ3xEjRmjs2LGaNm2aIiIidOzYMQUFBWny5MlGnYwZM6pBgwYaMmSITp48mWwAXI0aNVSpUiU1aNBAv/zyiy5evKg9e/Zo0KBBJl98enp6avHixUawZZYsWeTh4aHly5enOgDz888/l5mZmb744gudOHFCGzduNFmyVnoRIGNmZqYNGzbozz//NLJ+vqlOnTopIiJCq1atMim/ffu2bty4YbK9HCCakri4uATH37hxI9lsdk2aNJG5ublmzpyZ7Ll79eqluXPn6urVq/9Ie4nx9vbWn3/+qW+//TbR/blz59aECRM0depUDRo0SKdOndK5c+c0efJk9evXT3369EmQrTV+zM+fP6/169erRo0a2r9/vwICAkwCFlNzrZGRkQmW8X6d5RA7duwoBwcHLVmyxCgLDw/XoUOH1KFDBxUtWtRka9GihRYsWKDnz5+neczi3bt3L8G1pSbw3dXVVVFRUdq6dav++usvPXr0SO7u7vL19ZWfn59Wr16tCxcuaP/+/Ro7dqx+/vlnSS/eN/bu3asFCxbI19dXDRo0kK+vr5EJKrHzptSP1q1bq127dlq7dq0uXLig0NBQrVixQpL05Zdf6sqVK+revbtOnTqldevWadiwYerdu7cRvFG9enUtWrRIO3fu1LFjx9S6des0B63+XXPGq7p27ao7d+6oRYsWOnDggM6dO6dNmzapbdu2iomJUebMmeXo6Kjvv/9eZ8+e1bZt29S7d++32oeBAwfqwIED+vLLL3X06FGdOnVKs2fP1l9//SVJ2rRpk0JCQnThwgVt3rxZXl5eKlSokNq2bWucY+XKlQoNDdX58+e1bt061axZUw0aNDCWq3Zzc1N0dLSmT5+u8+fPa9GiRQmW3F28eLFWrFihkydP6vz581qxYoUGDhyoZs2aGdk99+3bp9WrV+v8+fPauXOnvL29FRsbq379+qV4jb/++qsuXryoY8eOaeDAgQoNDTV+SFCtWjVVrVpVjRo10ubNm3XhwgX95z//UUhIiKQX72mlS5dWu3btdPjwYYWFhalTp06qWbOm8eOTJUuWyM/PT/7+/qpQoYLx+ovPGp6ae+nr66usWbOqfv362rlzp/H89+jRw8hY17NnT4WEhMjf31+nTp3S8OHDdfDgQeNzQXR0tBo3bqyDBw9q8eLFiomJMfryctbUy5cvKzw8XJcvX1ZMTIwx18U/67///ru8vLxUq1Yt9e7d2zjHn3/+aZzDx8dHq1ev1uzZs3X+/Hnt3r1bPXr0UPny5Y3sxcOHD5e/v7+mTZumM2fO6NChQ5o+fboxru7u7mrdurWOHDminTt3atCgQYnew5kzZ2rNmjU6deqUunbtqrt376pdu3aSXmRWLFy4sFq1aqUjR45o06ZNGjx4sLp27WoEQhYoUECrV682At4///xzk3k/pbknMT/99JPmz5+v33//XWfPntXs2bM1ZswYde/e3agzbNgwLV26VMOGDdPJkyd17Ngxk4y3d+7cUXh4uE6cOCHpRUBYeHi4bty4keoxig+Sy507tyZNmqQ///zTuF/xevTooZCQEE2aNElnzpzRjBkzjOc7Xs+ePRUYGKigoCDjM+fx48eTvP5XJXevJSkoKEi//fabzp07px9++EFNmjTRV199ZZJBdsaMGTp06JDxmblbt24aO3askT29QIECOnjwoDZt2qSIiAgNGTIkwY+Mxo4dq82bN+v8+fM6efKk/P39tWjRIrVs2dKok9KclZjz589r7NixCgsL0+XLl7Vnzx41adJE1tbWqlu3rqQXWSvv37+v5s2b6+DBgzpz5owWLVqk06dPS5K6dOmiO3fuqGfPnoqIiNDPP/+sMWPGqGvXrkY7Xbt21Q8//KAlS5bIzs7OuJfxP3hJzXzav39/7dmzR926dVN4eLjOnDmjdevWGfOEmZmZevXqpVGjRmn9+vU6duyY/Pz8lDNnTjVo0EBS6p4r6UWW3PiAw5c/P8VLaW6UXswlo0eP1s8//6yLFy9qzZo1mjx5sho2bCgp5ddn586ddebMGX399dc6ffq0lixZouDg4AT3MH369Orevbv27dunsLAwtWnTRhUrVlT58uWN85w/f179+vXTqVOnNGvWLK1YsUJf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2TJJ0o4dO7Rjxw5t3bpVq1at0jfffBNvogcAAP80efLkkclk0vnz5xPs5+joqHv37sU6f/fuXTk5OcXqW7NmTdWsWVMjR46Ur6+vRo4caXHFK0t9/PHHatOmjfr166cFCxaYtbm7u2v//v16+vRprGpZv//+u+7fvy93d/dkiaN3797asWOHJk6cKDc3N9nb26tevXp6+vRpgtdFRESoXbt2cVaLS6h62stSpEhh/DsmiS6uc1FRURaNF9e4MeNYMkZC1zk6OurkyZPavXu3tm/frsGDB2vo0KE6duzYe6sy/rr3GaNcuXJ68OCBTp48qb1792r06NFydnbW2LFj5ePjo2zZsilPnjyvFU9872dS38s38fDhQ/n6+srX11fLli1TpkyZFBYWJl9f30Q/3y+z5LPeuHFj9e3bVydPntTjx491/fp1s0p6r44nSZs3b1b27NnN2mxtbSW9qEbp4+Oj3bt369ChQ6patarKlSunhg0b6uLFi7p06VKStod/F1KmTGlU/Bw7dqxq1KihYcOGacSIEWb9MmbMmOjW6S4uLgn2SazdysrKaPfy8tKVK1fUoUMHff/992b9nJycjH6rVq2Sm5ubSpYsGatCYHLN96Fxdna2aBt7S0RERMja2lonTpyIVVXz5UTHmzdv6uLFi7K2ttalS5fk5+f31ueM61n5ps9PSzg5OcnJyUl58uRRyZIllS5dOv34449q3Lhxss0Rk2SfN29eRUZGqm3bturVq5fZekycOFFjx47Vzp07YyXuW3IPln5GXq34Wq1aNf3yyy/asmWLduzYocqVK6tTp07xJonGxdbW1nguAgAAAAAAAAAAvK4kV8C8ceOG8YuYTZs2qUGDBvr000/Vp08fHTt2LNkDBADgfUmfPr18fX317bff6uHDh7Ha7969K+lFZbYTJ06YtUVGRio4ODjBRMaYraHjGjs5DB48WBcvXtTKlSvNzjdq1EgRERGaO3durGsmTpyoFClSqG7duomO7+XlpSNHjpidO3z4sNnrAwcOqEWLFvriiy+UP39+OTs7KzQ01KxPypQpzSpMSi+2UT937pzc3NxiHcm9xerL93PgwIFY8bu7u8dKvolPTGyv3o8lbGxsVKVKFY0fP16nT59WaGiofvrpJ4vmfHU+Ly8vHTp0yKzS6YEDB+To6KiPPvooybG9ysvLS9evXzer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vpaKNG/eHD/++CPi4+Ph4OCAGTNmYM6cORg0aJDQRiQSoV27dhCJRGjbti2AD0mZ2tracHJygqamZqXjbN26FZqamujcubPMsc6dO0NdXR0//PCDXDF7eHhgy5Yt6Nq1K2xtbTF69Gh4eHjgxx9/lGq3adMmGBkZwcLCAl999RVSU1Oxfft2qUS8P2P8+PHYvHkzvvvuu2pfm76+PtTV1WsknpogEolw4MABtG/fHoMHD4a1tTX8/Pzw4MED1K1bFwCwbNky1KpVCy4uLvD29oaHhweaN29eo3HExsaiUaNG6Ny5M7p164a2bdvKVUkWkO+eXrp0KUxMTNCuXTv069cPYWFhUomw5b0fiYiIiIiIiIiIiIiI/gqi0tLS0s8dBBERERH9e6Wnp6Nhw4a4fPkymjZt+rnDISIiqrKcnBzo6Oigyej1UFT95yTWEhHR55W8OPBzh0BERERERERERJ+B5PcG2dnZUqu4lYUVMImIiIiIiIiIiIiIiIiIiIiIiIiIqogJmERERET02UREREAsFpe5eXl5fe7wZMTGxpYbr729fY2Pl5GRUe54YrEYGRkZNT6mvEJCQsqNKyQk5LPF9Vf4K+7Tf9q9b29vX248sbGxf3s8/+v+rfP9Z+9bLy+vcs+PiIj4G66AiIiIiIiIiIiIiIioZnEJciIiIiL6bF6+fImXL1+WeUxdXR316tX7myOq2Js3b/D06dMyjykrK8PU1LRGxysqKkJ6enq5x83MzKCkpFSjY8rr2bNnyMnJKfOYtrY26tSp8zdH9Nf5K+7Tf9q9/+DBAxQWFpZ5rG7dutDS0vpb4/lf92+d7z973z5+/Bjv3r0r85ienh709PT+dIzVxSXIiYioLFyCnIiIiIiIiIjov6kqS5AzAZOIiIiIiIiI/tOYgElERGVhAiYRERERERER0X9TVRIwuQQ5EREREREREREREREREREREREREVEVfZ71ComIiIiIiIiI/mFOzPOv9C9ZiYiIiIiIiIiIiIiIJFgBk4iIiIiIiIiIiIiIiIiIiIiIiIioipiASURERERERERERERERERERERERERURUzAJCIiIiIiIiIiIiIiIiIiIiIiIiKqIiZgEhERERERERERERERERERERERERFVERMwiYiIiIiIiIiIiIiIiIiIiIiIiIiqSOlzB0BERERERERE9E/Qfto2KKqqf+4wiIjoM0teHPi5QyAiIiIiIiIion8JVsAkIiIiIiIiIiIiIiIiIiIiIiIiIqoiJmASEREREREREREREREREREREREREVUREzCJiIiIiIiIiIiIiIiIiIiIiIiIiKqICZhERERERERERERERERERERERERERFXEBEwiIiIiIiIiIiIiIiIiIiIiIiIioipiAiYRERERERERERERERERERERERERURUxAZOIiIiIiIiIiIiIiIiIiIiIiIiIqIqYgElERERERERENUIkEuGnn34CAKSnp0MkEiElJeWzxkRERERERERERERERPRXYQImERERERER/e1iYmKgq6srta+wsBDh4eFwdHSEpqYmjI2NERgYiCdPnsjdb2JiIjp16gQ9PT1oaGjAysoKAwcOREFBgUzbYcOGQVFRETt27BD2LV26FLVq1cL79+9l2r99+xba2tpYtWoVAMDMzAwikUhmW7hwIYD/S0CUbHp6eujQoQNOnjwp9/VIPHr0CCoqKnBwcJA5VlGiY8eOHTFu3DjhZ0nM8fHxMm3t7e0hEokQExNT5fjKYmJigszMzDJjro6y5rt+/fpSbTw8PKCoqIgLFy7UyJhEREREREREREREREQVYQImERERERER/SO8ffsWly5dwvTp03Hp0iXs3r0baWlp+PLLL+U6PzU1FZ6ennBycsKJEydw7do1rF69GioqKiguLpYZKz4+HpMmTUJUVJSwf8CAAcjLy8Pu3btl+t+5cycKCgrQv39/Yd+cOXOQmZkptY0ePVrqvCNHjiAzMxMnTpyAsbExvvjiCzx9+rQqU4OYmBj4+voiJycH586dq9K5nzIxMUF0dLTUvrNnzyIrKwuampp/qu+PKSoqwtDQEEpKSjXW56fzffnyZeFYRkYGTp8+jVGjRkm9pkRERERERERERERERH8VJmASERERERH9hyUkJKBt27bQ1dWFvr4+vvjiC9y7dw8AUFBQgFGjRsHIyAhqamowNTXFggULAAClpaWYNWsWGjRoAFVVVRgbG2PMmDFCv/n5+QgLC0O9evWgqamJ1q1b4/jx4wCA48ePY/DgwcjOzhYqGc6aNQs6Ojo4fPgwfH19YWNjgzZt2mDNmjVITk5GRkZGpddy6NAhGBoaYtGiRXBwcICFhQU8PT2xadMmqKurS7XdsWMH7OzsMHnyZJw4cQIP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pb7LEhAQgCtXrsDHx6daY38sOTkZV65cKfM11dHRQefOnaVeUyIiIiIiIiIiIiIiopokKi0tLf3cQRARERERERERfS45OTnQ0dFBk9Hroaj655JCiYjo3y95ceDnDoGIiIiIiIiIiD4jye8NsrOzy131TIIVMImIiIiIiIiIiIiIiIiIiIiIiIiIqogJmERERERERPSvEBERAbFYXObm5eX1ucOrlvKuRywW4+TJk58trtjY2HLjsre3/9ePR0REREREREREREREVBOUPncARERERERERPIICQmBr69vmcfU1f+dy0anpKSUe6xevXp/XyCf+PLLL9G6desyjykrK//rxyMiIiIiIiIiIiIiIqoJTMAkIiIiIiKifwU9PT3o6el97jBqlKWl5ecOoUxaWlrQ0tL6nx2PiIiIiIiIiIiIiIioJnAJciIiIiIiIiIiIiIiIiIiIiIiIiKiKmIFTCIiIiIiIiIiACfm+UNbW/tzh0FERERERERERERERP8SrIBJRERERERERERERERERERERERERFRFTMAkIiIiIiIiIiIiIiIiIiIiIiIiIqoiJmASEREREREREREREREREREREREREVUREzCJiIiIiIiIiIiIiIiIiIiIiIiIiKqICZhERERERERERERERERERERERERERFWk9LkDICIiIiIiIiL6J2g/bRsUVdU/dxhERPQ3S14c+LlDICIiIiIiIiKifylWwCQiIiIiIiIiIiIiIiIiIiIiIiIiqiImYBIRERERERERERERERERERERERERVRETMImIiIiIiIiIiIiIiIiIiIiIiIiIqogJmEREREREREREREREREREREREREREVcQETCIiIiIiIiIiIiIiIiIiIiIiIiKiKmICJhERERERERERERERERERERERERFRFTEBk4iIiIiIqqRjx44YN27c5w7jH0ckEuGnn3763GEQ/WX+Sff4oEGD0LNnz88dBhERERERERERERER/ccxAZOIiIiI/vN+++03dOvWDfr6+tDQ0ICdnR1CQ0Px+PFjAEBMTAx0dXXLPPfThKQ9e/agTZs20NHRgZaWFuzt7YVkxY4dO0IkEpW7dezYsdJYzczMIBKJcPbsWan948aNkzn/5cuXGDduHExNTaGiogJjY2MEBQUhIyND3qmpEcePH4dIJMLr16//1nH/KrNmzULT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q6vXSDz/RDo6Ojh06BDu37+PFi1aIDQ0FDNmzMDQoUM/d2hERERERERERERERERyE5WWlpZ+7iCIiIiIiMqTnp6Ohg0b4vLly2jatOnnDoeIiP4H5eTkQEdHB01Gr4ei6v9u4isREZUteXHg5w6BiIiIiIiIiIj+QSS/N8jOzpZaZa0srIBJRERERERERERERERERERERERERFRFTMAkIiIiov9ZEREREIvFZW5eXl6fOzwZsbGx5cZrb29f4+NlZGSUO55YLEZGRkaNjymvkJCQcuMKCQn5bHH9Ff6K+/Sfdu/b29uXG09sbOzfHs//un/CfHt5eZUbQ0RERKXnV/RsOnny5N9wBURERERERERERERERJXjEuRERERE9D/r5cuXePnyZZnH1NXVUa9evb85ooq9efMGT58+LfOYsrIyTE1Na3S8oqIipKenl3vczMwMSkpKNTqmvJ49e4acnJwyj2lra6NOnTp/c0R/nb/iPv2n3fsPHjxAYWFhmcfq1q0LLS2tvzWe/3X/hPl+/Pgx3r17V+YxPT096OnpVXj+3bt3yz1Wr149qKvX7DLhXIKciOi/jUuQExERERERERHRx6qyBDkTMImIiIiIiIjoP40JmERE/21MwCQiIiIiIiIioo9VJQGTS5ATEREREREREREREREREREREREREVUREzCJiIiIiIiIiIiIiIiIiIiIiIiIiKpI6XMHQERERERERET0T3Binn+lS4kQERERERERERERERFJsAImEREREREREREREREREREREREREVEVMQGTiIiIiIiIiIiIiIiIiIiIiIiIiKiKmIBJRERERERERERERERERERERERERFRFTMAkIiIiIiIiIiIiIiIiIiIiIiIiIqoiJmASEREREREREREREREREREREREREVWR0ucOgIiIiIiIiIjon6D9tG1QVFX/3GEQEdHfIHlx4OcOgYiIiIiIiIiI/gewAiYRERERERERERERERERERERERERURUxAZOIiIiIiIiIiIiIiIiIiIiIiIiIqIqYgElEREREREREREREREREREREREREVEVMwCQiIiIiIiIiIiIiIiIiIiIiIiIiqiImYBIRERERERERERERERERERERERERVRETMImIiIiIiIiIiIiIiIiIiIiIiIiIqogJmERERERERERERERERERERERERERE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k5OTXHE/e/YM79+/x5s3b5CcnIxFixbhjz/+wO7du+U6X14vXrxAVlYWioqKcO3aNaxcuRJubm7Q1tZGSkoKLl26hNjYWDRq1EjqPH9/f8yZMwfz5s0TKo7ev38fKSkpUu2srKygqalZozETEREREREREREREREBgELlTYiIiIiIiOi/REFBAfHx8UhOToaDgwPGjx+PxYsXC8e1tLSwaNEiODk5oWXLlkhPT8eBAwegoKAAXV1dbNq0Ca6urmjcuDGOHDmCX375Bfr6+gCA6OhoBAYGIjQ0FDY2NujZsycuXLiABg0aAABcXFwQEhKCvn37wsDAAIsWLaow1qioKPj4+MgkNgJAr169sHfvXvzxxx9wd3fH2bNn0adPH1hbW6NXr15QU1PD0aNHhdj+KvLGCAANGjSAu7s7Xr16haCgoDL7S0hIgJGRkdTWtm3bCmOws7ND165dMWPGDLnjtrGxgbGxMVq0aIGFCxfC3d0d169f/9PLmH/K3d0dRkZGMDMzw9ChQ9GtWzds374dwIel2+3s7GSSLwHAx8cHz549w4EDB4R9EyZMQLNmzaS2y5cv12i8REREREREREREREREEqLS0tLSzx0EEREREREREdHnkpOTAx0dHTQZvR6KqrJVR4mI6H9P8uLAzx0CERERERERERH9Q0l+b5CdnQ1tbe0K27ICJhERERERERERERERERERERERERFRFTEBk4iIiIiIiP6xTp48CbFYXO72d4mIiCg3Bi8vr78tjprg5eVV7rVERETU2DghISHljhMSElJj4xAREREREREREREREX0uXIKciIiIiIiI/rHevXuHx48fl3vc0tLyb4nj5cuXePnyZZnH1NXVUa9evb8ljprw+PFjvHv3rsxjenp60NPTq5Fxnj17hpycnDKPaWtro06dOjUyTk3gEuRERP89XIKciIiIiIiIiIjKU5UlyJX+ppiIiIiIiIiIqkxdXf1vS7KsSE0mJn5uf1eyaJ06df5RSZZEREREREREREREREQ1jUuQExERERERERERERERERERERERERFVERMwiYiIiIiIiIiIiIiIiIiIiIiIiIiqiEuQExEREREREREBODHPH9ra2p87DCIiIiIiIiIiIiIi+pdgBUwiIiIiIiIiIiIiIiIiIiIiIiIioipiAiYRERERERERERERERERERERERERURUxAZOIiIiIiIiIiIiIiIiIiIiIiIiIqIqYgElEREREREREREREREREREREREREVEVMwCQiIiIiIiIiIiIiIiIiIiIiIiIiqiKlzx0AEREREREREdE/Qftp26Coqv65wyAior9Y8uLAzx0CERERERERERH9j2AFTCIiIiIiIiIiIiIiIiIiIiIiIiKiKmICJhERERERERERERERERERERERERFRFTEBk4iIiIiIiIiIiIiIiIiIiIiIiIioipiASURERERERERERERERERERERERERURUzAJCIiIiIiIiIiIiIiIiIiIiIiIiKqIiZgEhERERERERERERERERERERERERFVERMw/+PMzMywYsWKzx3G3+KfdK3p6ekQiURISUmpsF3Hjh0xbty4vyUmIiKqvtLSUgwdOhR6enpyPd/pn0ckEuGnn34CIP/n9N8hKSkJjo6OUFZWRs+ePT9rLB/PUXXFxMRAV1e3wjazZs1C06ZN/9Q4n8OgQYNq5DXKyspCly5doKmpKcxVTcx9Tdq4cSNMTEygoKDwj/l+/b/q1q1baNOmDdTU1P6V7wsiIiIiIiIiIiIiIqL/df+6BMysrCyMHj0a5ubmUFVVhYmJCby9vXH06FEA5f9y8tNfiN6/fx/9+vWDsbEx1NTUUL9+ffTo0QO3bt1CTEwMRCJRhVt6enqFcc6aNQsikQghISFS+1NSUso8f8uWLWjZsiU0NDSgpaWFDh06YN++fdWZIirHhQsXMHTo0M8dRpmOHz8OkUiE169fV7uPjh07CvenmpoarK2tsWDBApSWlgptJAklZW1nz54FgHLv/82bN1d4XE1NTRhn0KBBwn5lZWU0bNgQkyZNwvv376Vi/vh8bW1ttGzZEj///LNUm5ocryKfzoNEfn4+9PX1IRKJcPz4calj+/btQ4cOHaClpQUNDQ20bNkSMTExUm0+nXMtLS3Y29tj5MiRuHPnTrWutbrJHWZmZmVe47hx49CxY0eZ9o8ePYKKigocHBzK7K+qc1bevRcfH19p7PIk7FTHX9XvX60mnhn/dG/evMG4ceNgamoKdXV1uLi44MKFC1Jtnj59ikGDBsHY2BgaGhrw9PSUeV9VJi0tDW5ubqhbty7U1NRgbm6OadOmobCwUGhTWFiIOXPmwMLCAmpqamjSpAkSEhKk+klISEBMTAz27duHzMxM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VE3/7H6kRERERERERETfqKMzulf5L1mJiIiIiIiIiIiIiIjKMAMmEREREREREREREREREREREREREVE1MQCTiIiIiIiIiIiIiIiIiIiIiIiIiKiaGIBJRERERERERERERERERERERERERFRNDMAkIiIiIiIiIiIiIiIiIiIiIiIiIqomBmASEREREREREREREREREREREREREVUTAzCJiIiIiIiIiIiIiIiIiIiIiIiIiKpJ7msPgIiIiIiIiIjoW9A6bDNkFZW/9jCIiOhvlD4v8GsPgYiIiIiIiIiI/kOYAZOIiIiIiIiIiIiIiIiIiIiIiIiIqJoYgElEREREREREREREREREREREREREVE0MwCQiIiIiIiIiIiIiIiIiIiIiIiIiqiYGYBIRERERERERERERERERERERERERVRMDMImIiIiIiIiIiIiIiIiIiIiIiIiIqokBmERERERERERERERERERERERERERE1cQATCIiIiKiL8jY2BiLFi362sOgf6HS0lIMHDgQWlpaEIlEyMjI+NpDomoSiUTYtWsXACA3N/ebuY8nTpyAra0t5OXl0bFjx686lo/n6HPFxsaiRo0aldYJDw+Hvb39X+qHiIiIiIiIiIiIiIioKgzAJCIiov+k+/fvY/jw4WjQoAEUFRVhaGgIHx8fJCcnA6g4ACQoKEgsOOXmzZvo0aMH6tatCyUlJRgYGMDX1xdXrlxBbGwsRCJRpZ/c3NxKxxkeHg6RSITBgweLHc/IyCj3/HXr1sHJyQkqKipQV1eHq6sr9u7d+zlTRJ+QJqDn3+ZLBDr9m7148QKjRo2CkZERlJWV0bx5c5w9e1aszoMHDxAUFIS6detCRUUF7dq1w7Vr16rVT3Z2Ntzd3VGnTh0oKSmhQYMGCAsLQ1FRkVCnqKgIERERMDExgZKSEuzs7JCYmCjWTmJiImJjY7F3717k5+fDxsYGUVFRaNSoETQ0NKChoQEXFxf89ttv1RpfaWkp5s+fDzMzMygqKkJfXx8zZ84UyhMSEtC2bVvo6OgIfSQlJVWrD2lt27YNFhYWUFJSgq2tLfbv3y+UFRUVYfz48bC1tYWqqirq1q2LwMBA3Lt3T6yNmTNnonnz5lBRUSn3mb148SK6d+8OQ0NDKCsrw9LSEosXL5aoFxcXBzs7O6ioqEBPTw99+/bF48ePv/g1VyUv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794Ne3t7fPfdd0hLSxPKd+/eDQcHByFjardu3eDg4CAEKEszRwcPHkROTg6Sk5NhYGAgdr/KODs7Y/Xq1Vi8eDHs7Oxw4MABifeJv78/Jk+ejNDQUDRp0gS3bt3CkCFDKrx+IiIiIiIiIiIiIiKiL0VU+vHegERERERE9FVs2LABo0ePxr1794RMf0RE9M94/vw5NDU1YTd8JWQVlas+gYiI/rXS5wV+7SEQEREREREREdE3ruzvDZ49eyYkG6kItyAnIiIiIvqKXr16hfz8fERGRmLQoEEMviQiIiIiIiIiIiIiIiIi+pfgFuREREREfyM1NbUKP8eOHfvi/Xl7e1fY36xZs754f9KIi4urcEzW1tZfZUzSOHbsWKX370uZO3cuLCwsoKuri4kTJ0p93t8xr9/avfoW1zMRERERERERERERERERURluQU5ERET0N8rJyamwTF9fH8rKX3ab07t37+L169fllmlpaUFLS+uL9ieNFy9e4MGDB+WWycvLw8jI6B8ekXRev36Nu3fvVlhuamr6D45G0t8xr9/avfoW1zMR/TdxC3Iiov8d3IKciIiIiIiIiIiqwi3IiYiIiL4R/3SQnr6+/j/anzTU1dWhrq7+tYdRbcrKyl89yLIyf8e8fmv36ltcz0REREREREREREREREREZbgFORERERERERERERERERERERERERFRNTEDJhERERERERERgKMzule5lQgREREREREREREREVEZZsAkIiIiIiIiIiIiIiIiIiIiIiIiIqomBmASEREREREREREREREREREREREREVUTAzCJiIiIiIiIiIiIiIiIiIiIiIiIiKqJAZhERERERERERERERERERERERERERNXEAEwiIiIiIiIiIiIiIiIiIiIiIiIiomqS+9oDICIiIiIiIiL6FrQO2wxZReWvPQwiIvobpc8L/NpDICIiIiIiIiKi/xBmwCQiIiIiIiIiIiIiIiIiIiIiIiIiqiYGYBIRERERERERERERERERERERERERVRMDMImIiIiIiIiIiIiIiIiIiIiIiIiIqokBmERERERERERERERERERERERERERE1cQATCIiIiIiIiIiIiIiIiIiIiIiIiKiamIAJhERERERERERERERERERERERERFRNTEAk4iIiIiIiIiIiIiIiIiIiIiIiIiomhiASURERERE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RERERERERERERERERERERERERNX0dfYWJCIiIiIiIiL6xhyd0b3Kf8lKRERERERERERERERUhhkwiYiIiIiIiIiIiIiIiIiIiIiIiIiqiQGYRERERERERERERERERERERERERETVxABMIiIiIiIiIiIiIiIiIiIiIiIiIqJqYgAmEREREREREREREREREREREREREVE1MQCTiIiIiIiIiIiIiIiIiIiIiIiIiKia5L72AIiIiIiIiIiIvgWtwzZDVlH5aw+DiIj+RunzAr/2EIiIiIiIiIiI6D+EGTCJiIiIiIiIiIiIiIiIiIiIiIiIiKqJAZhERERERERERERERERERERERERERNXEAEwiIiIiIiIiIiIiIiIiIiIiIiIiompiACYRERERERERERERERERERERERERUTUxAJOIiIiIiIiIiIiIiIiIiIiIiIiIqJoYgElEREREREREREREREREREREREREVE0MwCQiIiIiqiZjY2MsWrToaw/jiygtLcXAgQOhpaUFkUiEjIyMz26ruvMSGxuLGjVqfHZ/X8OVK1fg7OwMJSUl2NvbV3iMADc3N4waNeprD+Or+/S5EIlE2LVr11cbT0XCw8NRp06db3Z8RERERERERERERERE3yIGYBIR0b/WkSNH0L59e2hra0NFRQVWVlYICQnB3bt3AVQe2PNpcMHOnTvh7OwMTU1NqKurw9raWggacXNzg0gkqvDj5uZW5ViNjY0hEolw+vRpseOjRo2SOL+goACjRo2CkZERFBQUULduXfTt2xd5eXnSTo3g1KlTkJWVRYcOHSTKcnNzxa5DW1sbnp6euHDhglDn5s2b6NGjB+rWrQslJSUYGBjA19cXV65cEep83IaqqioaNmyIoKAgpKenC3WCgoIqnUNjY2MA4nOtpKQEMzMzzJ49G6WlpWJjv3DhArp27Yo6depASUkJDRs2xIABA3D16lWxaysvkOzTgKC/GiDEdfhtq2wtVGT16tVo1aoVatasiZo1a8LDwwNpaWl/y/hSUlLQuHFjKCoqwtTUFLGxsZ/VTmxsLBo1agQlJSXUrl0bw4YNk/rcxMRExMbGYu/evcjPz4eNjQ1evHgh3H9lZWU0b94cZ8+e/ayx/VXHjx9HixYtoK2tDWVlZVhYWODnn38Wq3P06FH4+Pigbt26FQaPJSQkwNPTE9ra2hWu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cHd3h46OjkT2byIiIiIiIiIiIiIioi9FVFpaWvq1B0FERP89ubm5qF+/Pi5cuAB7e/uvPRwiIiIi+kqCgoLw9OlT7Nq162sPpULPnz+HpqYm7IavhKxi5VlLiYjo3y19XuDXHgIREREREREREX3jyv7e4NmzZ0ISioowAyYRERERERERERERERERERERERERUTUxAJOIiL45s2bNgpqaWrkfb2/vrz08CXFxcRWO19ra+ov3l5eXV2F/ampqyMvL++J9/i/iOqzcv3kdVjbuY8eOfe3hEdE36tixY5W+P77l/r6V996/+WcHERERERERERERERFRebgFORERfXMKCgpQUFBQbpmysjL09fX/4RFV7sWLF3jw4EG5ZfLy8jAyMvqi/RUXFyM3N7fCcmNjY8jJyX3RPv8XcR1W7t+8DnNycios09fXh7Iyt54lIkmvX7/G3bt3Kyw3NTX9Zvv7Vt573/LPDm5BTkT0v4NbkBMRERERERERUVWqswU5AzCJiIiIiIiI6H8aAzCJiP53MACTiIiIiIiIiIiqUp0ATG5BTkRERERERERERERERERERERERERUTQzAJCIiIiIiIiIiIiIiIiIiIiIiIiKqJrmvPQAiIiIiIiIiom/B0Rndq9xKhIiIiIiIiIiIiIiIqAwzYBIRERERERERERERERERERERERERVRMDMImIiIiIiIiIiIiIiIiIiIiIiIiIqokBmERERERERERERERERERERERERERE1cQATCIiIiIiIiIiIiIiIiIiIiIiIiKiamIAJhERERERERERERERERERERERERFRNcl97QEQEREREREREX0LWodthqyi8tceBhER/Y3S5wV+7SEQEREREREREdF/CDNgEhERERERERERERERERERERERERFVEwMwiYiIiIiIiIiIiIiIiIiIiIiIiIiqiQGYRERERERERERERERERERERERERETVxABMIiIiIiIiIiIiIiIiIiIiIiIiIqJqYgAmEREREREREREREREREREREREREVE1MQCTiIiIiIiIiIiIiIiIiIiIiIiIiKiaGIBJRET0N4qNjUWNGjW+9jC+OUFBQejYsePXHsb/lP+lOf/WrtXY2BiLFi2qtE54eDjs7e3/kfEQ0dfl5uaGUaNGfe1hfLM4P0RERERERERERERE9G/CAEwiIqq2+/fv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IiIikhMDMImIiIiIiIiIiIiIiIiIiIiIiIiI5KT8vQdARERERERERPRPcGxmYLlbiRARERERERERERERERVjBkwiIiIiIiIiIiIiIiIiIiIiIiIiIjkxAJOIiIiIiIiIiIiIiIiIiIiIiIiISE4MwCQiIiIiIiIiIiIiIiIiIiIiIiIikhMDMImIiIiIiIiIiIiIiIiIiIiIiIiI5MQATCIiIiIiIiIiIiIiIiIiIiIiIiIiOSl/7wEQEREREREREf0TNJq0FUpqGt97GERE9I0kz+/xvYdARERERERERET/zzADJhERERERERERERERERERERERERGRnBiASUREREREREREREREREREREREREQkJwZgEhERERERERERERERERERERERERHJiQGYRERERERERERERERERERERERERERyYgAmEREREREREREREREREREREREREZGcGIBJRERERERERERERERERERERERERCQnBmASEREREREREREREREREREREREREcmJAZhERERERET0t4qOjoaenp7oXG5uLsaNG4caNWpAS0sLpqam6NGjBx49eiR3+wMHDoSSkhLi4+Olyt6+fYsJEybAysoK6urqMDIygpeXF37++Wfcv38fCgoKZR7R0dHl9r9u3Tq4uLhAIpFAT08Prq6umDNnTol17e3toaamhsePHwvn/Pz84OPjU2L9pKQkKCgo4PLly2WO9/Tp0wCK1rr4nKKiIkxMTBAQEID09HQZVrJI48aNS+wjLy9PqFPWmpclLCxM1Kauri48PT2RmJhYYv05c+ZASUkJ8+fPlyor6b4iIiIiIiIiIiIiIiL6lhiASURERERERN/d27dvceHCBUyePBkXLlzAzp07kZaWhjZt2sjdTmxsLMaOHYvIyEip8kGDBmHnzp1YtmwZbty4gYMHD6JTp054/vw5zMzMkJGRIRyjR4+Gk5OT6FxAQECZ/UdGRmLEiBEICQlBSkoKTpw4gbFjxyIrK0uq7vHjx/Hu3Tt06tQJGzZsEM737dsXhw8fxoMHD6SuiYqKgpubG5ydnYVzR44cEY0xIyMDtWvXFsp1dHSQkZGBhw8fYseOHUhLS0Pnzp1lWs9i/fv3l+pDWVkZQPlrXp6P1/jUqVOwsbFB69atkZmZKVU3MjLys/shIiIiIiIiIiIiIiL62hiASURERERE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5jhHjhyJffv24ezZs581T3nWvDzXrl0Txl2zZk1s27YNq1atQo8ePfDhwwds3ry5xH4AoGPHjti4cSNyc3MBAFlZWXB1dRUdfn5+nzVHIiIiIiIiIiIiIiKi8igUFhYWfu9BEBERERERERF9L69fv4auri5chq2GkprG9x4OERF9I8nze3zvIRARERERERER0b9A8X83yMzMLHcHNWbAJCIiIiIiIiIiIiIiIiIiIiIiIiKSEwMwiYiIiIiI6B9v9uzZkEgkJR6+vr5/2zh8fX1LHcfs2bP/tnF8LUlJSaXORyKRfHH7ZbWdlJT0FWZARERERERERERERET0/Sh/7wEQERERERERlWfQoEHw9/cvsUxD4+/bMnr9+vV49+5diWUGBgZ/2zi+Fjc3N6SkpHyz9stqu3Llyt+sXyIiIiIiIiIiIiIior8DAzCJiIiIiIjoH8/AwOAfEeD4/y1oUENDA9bW1t+s/W/ZNhERERERERERERER0ffGLciJiIiIiIiIiIiIiIiIiIiIiIiIiOTEDJhERERERERERACOzQyEjo7O9x4GERERERERERERERH9SzADJhERERERERERERERERERERERERGRnBiASUREREREREREREREREREREREREQkJwZgEhERERERERERERERERERERERERHJiQGYRERERERERERERERERERERERERERyYgAmEREREREREREREREREREREREREZGcGIBJRERERERERERERERERERERERERCQn5e89ACIiIiIiIiKif4JGk7ZCSU3jew+DiIhKkTy/x/ceAhERERERERERkQgzYBIRERERERERERERERERERERERERyYkBmEREREREREREREREREREREREREREcmIAJhERERERERERERERERERERERERGRnBiASUREREREREREREREREREREREREQkJwZgEhERERERERERERERERERERERERHJiQGYRERERERERERERERERERERERERERyYgAmEREREdFnsLCwwOLFi7/3MP4ToqOjoaen9837uX//PhQUFJCSkvLN+/qvady4MUaMGPHN+/ka98rbt2/RsWNH6OjoQEFBAa9evfoqY/uePufeDgsLQ82aNf/2fomIiIiIiIiIiIiIiP5NGIBJRERE/2qPHz/GsGHDYGlpCTU1NZiZmcHP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Xf0T72ciIiIiIiIiIiIiIiIiovJwC3IiIiIiIiIiIiIiIiIiIiIiIiIiIjkxAyYREREREREREYBjMwPL3UqEiIiIiIiIiIiIiIioGDNgEhERERERERERERERERERERERERHJiQGYRERERERERERERERERERERERERERyYgAmEREREREREREREREREREREREREZGcGIBJRERERERERERERERERERERERERCQnBmASEREREREREREREREREREREREREclJ+XsPgIiIiIiIiIjon6DRpK1QUtP43sMgIqJPJM/v8b2HQEREREREREREVCJmwCQiIiIiIiIiIiIiIiIiIiIiIiIikhMDMImIiIiIiIiIiIiIiIiIiIiIiIiI5MQATCIiIiIiIiIiIiIiIiIiIiIiIiIiOTEAk4iIiIiIiIiIiIiIiIiIiIiIiIhITgzAJCIiIiIiIiIiIiIiIiIiIiIiIiKSEwMwiYiIiIiIiIiIiIiIiIiIiIiIiIjkxABMIiIiIiIiIiIiIiIiIiIiIiIiIiI5MQCTiIiIiIiIiIiIiIiIiIiIiIiIiEhODMAkIiIiIiKifx0FBYUyj7CwMNy/f190ztDQEC1atMDFixdFbZ06dQpKSkpo1aqVcG7Tpk3Q0tLC7du3RXUfPXoEfX19LF++vNwxXrp0CW3atEHFihWhrq4OCwsLBAQE4OnTpwAgNb6Pj9OnT4vaevfuHQwMDFChQgXk5ORI9WVhYVHidSNGjEDjxo3LHWvx9aUdvXr1AiBedx0dHbi7u+Pnn38ut/1PyTqf2NhYqTInJycoKCggOjoaR48eLfdeOHr0qNzjIyIiIiIiIiIiIiIikgUDMImIiIiIiOhfJyMjQzgWL14MHR0d0bnQ0FCh7pEjR5CRkYFDhw4hKysLvr6+ePXqlVAeERGBYcOG4dixY3j06BEAoHv37vD29kavXr1QUFAg1O3fvz9q166NoUOHljm+Z8+eoWnTpjAwMMChQ4dw/fp1REVFwdTUFNnZ2aK6xeP7+Khdu7aozo4dO+Dk5AR7e3vs3r27xD7V1dUxbtw4WZZPyrlz54S+d+zYAQBIS0sTzi1ZskSoGxUVhYyMDJw/fx4NGjRAp06dcOXKFbn6k2U+ZmZmiIqKEp07ffo0Hj9+DC0tLQBA/fr1Revm7+8PHx8f0bn69evLNTYiIiIiIiIi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mjXTu+++q8OHDys5OVnffPNNvta8f72AgAB99913JpVOd+3aJWdnZ5UqVcri2O4XEBCg06dPm1TPOnbsmC5fvmysJujm5qZq1arp/fffV6FChVSpUiU1btxYBw8e1BdffPFEEvwOHTpksh327t275eTklO9tV7N7vv38/GRtba0ff/xRFy9e1PTp09WoUSNVqlTJrOJbxYoV9f3335u0ZW3RniU/z3qpUqXUpEkTLVu2TMuWLVPz5s1zrLpWuXJl2dnZKSUlxWy+P193kyZNtGXLFm3fvl0hISFyd3dXQECA3n77bXl5eeUrCbtSpUq6e/euyfsvMTHR+G7MUqhQoUdS5e7P3nzzTc2cOVO//vrrI533QYwdO1YrVqzQgQMHchzj5OSkl19+WaNGjXroCsT5WS8nPXr00JEjR1SlShWzyp95WbJkif744498/X6YO3euXFxcLE5QexSsrKw0bdo0ffDBB2a/byIjI9WtWzezSpXdunUz+8cKWfr3769t27apXbt2KlKkyCOPN7vfG/n9Hr/66quysrLSV199pfnz55v8zrD091F+13xQub1PH9bYsWN1+PBhsyqyc+bMyXF7+bxkJZDeunXL2LZ8+XL169dPy5cvV5s2bR46bku5uLioa9euWrx4sVasWKE1a9bo0qVLkh7PexYAAAAAAAAAACA7VMAEAFhkwYIFatCggZ555hlNmjRJ1apV0927d7Vp0yZ98MEHOn78uEaOHKkBAwaoUqVKat68ua5fv6733ntPf/zxh1544QVJUkJCgsaPH69evXqpcuXKsrW11bZt2xQVFaUxY8Y8lthLlCihkSNHasaMGSbt9erV08svv6zXXntNt2/fVvv27XXnzh198sknmjdvnubOnZuvZIvhw4erQYMGmjlzptq1a6evv/5aGzZsMBnj5+entWvXKiwsTAaDQW+99ZZZVSxfX19t375d3bp1k52dnYoWLaoxY8aobt26ioiI0AsvvCBHR0cdO3ZMmzZt0vvvv//wNycbr776qmrXrq3Jkyera9eu+u677/T+++9r4cKF+Z6jePHisre314YNG1SqVCkVLlzYrApqdr744gv973//U+PGjVWkSBGtX79eGRkZqlixYp7n+vr6as+ePUpOTpaTk5Pc3d310ksvae7cuRo2bJgiIiKUmJio8ePHa+TIkbKyevh/j9Ks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AAAAAAAAAAAAAAAALEQCJgAAAAAAAAAAAAAAAAAAgIVIwAQAAAAAAAAAAAAAAAAAALAQCZgAAAAAAAAAAAAAAAAAAAAWIgETAAAAAAAAAAAAAAAAAADAQiRgAgAAAAAAAAAAAAAAAAAAWIgETAAAAADA31pMTIzc3NwsOickJEQGg0EGg0F2dnby9vZWWFiY1q5dazY2a9z9R2xsrCRp69atJu329vYKDAzURx99lOccWceECRNyjTc5OVkGg0EJCQk5jvn222/VunVrFSlSRIULF1bVqlU1e/ZspaenZzu+UqVKsrOz07lz53K8P1nXmGXu3Lny9fXNNdYsMTExJtfo5OSkmjVrZnuPJWn58uWytrbW0KFDzfqy7vHly5fztTYAAAAAAAAAAMCjQAImAAAAAADZGDhwoM6ePauTJ09qzZo1qly5srp166YXX3zRbGx0dLTOnj1rcrRv395kTGJios6ePatjx45p0KBBGjJkiOLj4yXJ5Ly5c+fKxcXFpG3UqFEPdS2fffaZmjRpolKlSmnLli368ccf9fLLL2vKlCnq1q2bMjMzTcbv3LlTaWlp6tSpk5YsWZLtnIULF9abb76pO3fuPHBcf77OgwcPKjQ0VF26dFFiYqLZ2MjISI0ePVrLly/XzZs3H3hNAAAAAAAAAACAR4UETAAAAADAE7FhwwY1bNhQbm5u8vDwUNu2bXXy5ElJ0u3btxURESEvLy8VLlxYZcqU0bRp0yRJmZmZmjBhgkqXLi07OzuVLFlSw4cPN85769YtjRo1St7e3nJ0dFSdOnW0detWSfcqI/br10+pqan5riaZxcHBQZ6enipVqpTq1q2rd955R4sWLdLixYu1efNmk7Fubm7y9PQ0OQoXLmwypnjx4vL09FTZsmU1fPhwlS1bVgcOHJAkk/NcXV1lMBhM2pycnB7klkuSrl+/roEDB+pf//qXPvroI1WvXl2+vr564YUXtGTJEq1evVorV640OScyMlI9evRQr169FBUVle283bt31+XLl7V48eIHju3P1+nn56cpU6bIyspKhw8fNhl36tQpffvttxo7dqz8/f1zrJIJAAAAAAAAAADwJJGACQAAAAB4Iq5fv66RI0fq+++/V3x8vKysrNShQwdlZGRo/vz5iouL08qVK5WYmKhly5YZt7Jes2aN5syZo0WLFikpKUnr1q1T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iKSYAZOIiIiIiIiIiIiIiIiIiIiIiIiIqIIYgElEREREREREREREREREREREREREVEEMwCQiIiIiIiIiIiIiIiIiIiIiIiIiqiAGYBIRERERERERERERERERERERERERVRADMImIiIiIiIiIiIiIiIiIiIiIiIiIKogBmEREREREREREREREREREREREREREFaT0d3eAiIiIiIiIiOifoPWcPVBUVf+7u0FEVCniV3j93V0gIiIiIiIiIiL6n8cMmEREREREREREREREREREREREREREFcQATCIiIiIiIiIiIiIiIiIiIiIiIiKiCmIAJhERERERERERERERERERERERERFRBTEAk4iIiIiIiIiIiIiIiIiIiIiIiIioghiASURERERERERERERERERERERERERUQQzAJCIiIiIiIiIiIiIiIiIiIiIiIiKqIAZgEhERERER/cPFxcXBzs4OysrK6NGjR7nlhwwZIle5v0tYWBh0dXVF27Zu3QoTExNUqVIFa9euLXHb/Pnz0bBhw7+8v/90bdu2xcSJEyu93vT0dCgoKCAxMbHS6yYiIiIiIiIiIiIiIvpfwABMIiKi/yFnz55Fly5dUK1aNWhoaKBevXqYMmUKnjx5AqDkgBcpBQUFHDlyRPj58OHDaNmyJXR0dKClpYX69esLwR1t27aFgoJCqZ+2bduW21dTU1MoKCjg0qVLou0TJ06UOf7Vq1eYOHEi6tSpAxUVFdSsWRPe3t7IyMiQd2gEFy9ehKKiIrp27SqzTxpoIv1Uq1YNnTp1QkJCglDmwYMHGDBgAGrWrAk1NTXUqlUL7u7uuH37tlDm8zo0NTVhaWmJIUOGID4+XigzZMiQMsfQ1NQUgHis1dTUYGVlhaVLl6KoqEjU94SEBPTp0wc1atSAmpoaLC0tMXz4cNy9e1d0biUF0XwZuFMZgTwjR46EoqIi9u/fL7Nv/vz5wjkpKSnB1NQUkyZNQk5OjlCmrPsPKL6XpXUoKiqiatWqaNGiBRYuXIisrCyhXFljrKCggPnz58tcdz09PbRp0waxsbFffW6urq4y+1asWCF6PqTPQGmfIUOGyDna/zwbN26Eqakp1NTU0KJFC1y5ckW0f+TIkTA3N4e6ujr09fVlnqHPvXz5ErVq1YKCggLevHlTYpm4uDgoKSl9VWDe4sWL4eTkBA0NjVLnx7Lc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iIiIiIiIiOhfSfq9QVZWFrS1tcssywyYREREREREREREREREREREREREREQVxABMIiKif4ElS5ZAIpGU+OncufPf3T0Zu3btKrW/Xy67WhkyMjJKbU8ikSAjI6PS2/y/6N92H/7b/RPHm88aEX0LziFERERERERERERERPS/hkuQExER/Qu8evUKr169KnGfuro6jI2N/+Iele3t27d4/vx5ifuUlZVRp06dSm0vPz8f6enppe43NTWFkpJSpbb5f9G/7T78t/snjjefNSL6Fv/kOYRLkBPR/yIuQU5ERERERERERPR1KrIEOb8dJSIi+hfQ09ODnp7e390NuWlpaUFLS+sva09JSQkWFhZ/WXv/V/3b7sN/u3/iePNZI6JvwTmEiIiIiIiIiIiIiIj+13AJciIiIiIiIiIiIiIiIiIiIiIiIiKiCmIGTCIiIiIiIiIiAOcW9S93KREiIiIiIiIiIiIiIiIpZsAkIiIiIiIiIiIiIiIiIiIiIiIiIqogBmASEREREREREREREREREREREREREVUQAzCJiIiIiIiIiIiIiIiIiIiIiIiIiCqIAZhERERERERERERERERERERERERERBXEAEwiIiIiIiIiIiIiIiIiIiIiIiIiogpS+rs7QERERERERET0T9B6zh4oqqr/3d0gIpJb/Aqvv7sLRERERERERERE/6cxAyYRERERERERERERERERERERERERUQUxAJOIiIiIiIiIiIiIiIiIiIiIiIiIqIIYgElEREREREREREREREREREREREREVEEMwCQiIiIiIiIiIiIiIiIiIiIiIiIiqiAGYBIRERERERERERERERERERERERERVRADMImIiIiIiIiIiIiIiIiIiIiIiIiIKogBmEREREREREREREREREREREREREREFcQATCIiIiIiIiIiIiIiIiIiIiIiIiKiCmIAJhEREREREX0zBQWFMj/z589Henq6aFu1atXQqVMnJCQkiOq6ePEiFBUV0bVrV2HbTz/9BE1NTaSmporKPn36FFWrVsWGDRvk7uvSpUuhqKiIFStWyOwLCwuDrq5uqccOGTIEPXr0kKudP/74A6NHj0bt2rWhqqoKQ0NDuLi4IC4uTihjampa4ngtW7ZMpj4XFxcoKiri6tWrJfarpOOOHDkCBQWFcvsqPb60j6mpKQCgbdu2wjY1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tmloaEBbWxvBwcHo3bs3GjRoINpvYmKCmTNnIiIiAl27dpVp387ODp6enli3bp3cff5aI0eOREBAAA4ePIjevXuXWfZrzkdRUVFYTr2kYFMiIiIiIiIiIiIiIqK/S5W/uwNEREREREREwcHB6NChg0zwJVAcgHnt2jXcuHHjq+rOzc3Fzz//jF69epW4v1evXti5cyfy8vIAADk5OWjUqJHo4+bmVqE2JRIJWrRogTVr1qB169Zo0KAB5s6di+HDh2PDhg2isv7+/jAyMhJ9pk2bhvj4eCQlJZXYbx0dHbRv3x7BwcGl9mHhwoUoLCysUL+/hp6eHry8vDB//vwy2/uW89HW1oa2tnal9ZmIiIiIiIiIiIiIiKgyKBQVFRX93Z0gIiIiIiIiIvq7ZGdnQ0dHBw7jNkNRVf3v7g4RkdziV3j93V0gIiIiIiIiIiL6nyP93iArK6vcBBHMgElEREREREREREREREREREREREREVEEMwCQiIiIiIqJ/vV27dkEikZT4qV+/fqW3l5GRUWp7EokEGRkZld7mt+rcuXOp/V2yZEmltDFq1KhS2xg1alSltEFERERERERERERERPRPwSXIiYiIiIiI6F/v7du3eP78eYn7lJWVUadOnUptLz8/H+np6aXuNzU1hZKSUqW2+a2ePHmCDx8+lLhPT08Penp639zGixcvkJ2dXeI+bW1tGBgYfHMbfwYuQU5E/1ZcgpyIiIiIiIiIiKjyVWQJ8n/Wt0FEREREREREX0FLSwtaWlp/WXtKSkqwsLD4y9qrDMbGxn96GwYGBv/YIEsiIiIiIiIiIiIiIqLKxiXIiYiIiIiIiIiIiIiIiIiIiIiIiIgqiBkwiYiIiIiIiIgAnFvUv9ylRIiIiIiIiIiIiIiIiKSYAZOIiIiIiIiIiIiIiIiIiIiIiIiIqIIYgElEREREREREREREREREREREREREVEEMwCQiIiIiIiIiIiIiIiIiIiIiIiIiqiAGYBIRERERERERERERERERERERERERVRADMImIiIiIiIiIiIiIiIiIiIiIiIiIKkjp7+4AEREREREREdE/Qes5e6Coqv53d4OISC7xK7z+7i4QERERERERERH9n8cMmEREREREREREREREREREREREREREFcQATCIiIiIiIiIiIiIiIiIiIiIiIiKiCmIAJhERERERERER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",
      "text/plain": [
       "<Figure size 2000x2000 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 排序，查看前60的特征\n",
    "feat_imp_df.sort_values(by=['imp'],ascending=False, inplace=True)\n",
    "print(list(feat_imp_df[:100]['feats']))\n",
    "\n",
    "# 特征重要性可视化\n",
    "import seaborn as sns\n",
    "import matplotlib.pyplot as plt\n",
    "plt.figure(figsize = [20,20])\n",
    "sns.barplot(x = feat_imp_df.iloc[:50]['imp'], y = feat_imp_df.iloc[:50]['feats'])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e0cc3231",
   "metadata": {},
   "source": [
    "# 3 结果提交\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 135,
   "id": "927757fd",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-12-11T11:15:24.367630Z",
     "iopub.status.busy": "2024-12-11T11:15:24.367029Z",
     "iopub.status.idle": "2024-12-11T11:15:24.403700Z",
     "msg_id": "301e2fd0-b786-4dae-b62f-cbdf16a0bceb",
     "shell.execute_reply": "2024-12-11T11:15:24.403022Z",
     "shell.execute_reply.started": "2024-12-11T11:15:24.367601Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1的个数 973\n"
     ]
    }
   ],
   "source": [
    "from datetime import datetime\n",
    "\n",
    "abst = \"复现_B_lgb\"\n",
    "feat_imp_df.to_csv('./feature/feat_{}.csv'.format(abst))\n",
    "count_1 = sub_df[sub_df['FLAG']>=best_t]['FLAG'].count()\n",
    "print('1的个数', count_1)\n",
    "data_date = datetime.now().strftime('%Y%m%d')\n",
    "sub_df[['CUST_NO', 'FLAG']].to_csv('./B榜结果.csv'.format(data_date, curr_f1score, F_score, count_1, abst), header=None, index=False)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.18"
  },
  "toc": {
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
